コード例 #1
0
 protected Document Deserialize(string base64, BsonReaderSettings settings)
 {
     using (var mem = new MemoryStream(Convert.FromBase64String(base64)))
     {
         var reader = new BsonReader(mem, settings);
         return((Document)reader.ReadObject());
     }
 }
コード例 #2
0
 protected T Deserialize <T>(string base64)
 {
     using (var mem = new MemoryStream(Convert.FromBase64String(base64)))
     {
         var reader = new BsonReader(mem, new BsonClassMapBuilder(MappingStore, typeof(T)));
         return((T)reader.ReadObject());
     }
 }
コード例 #3
0
        public void TestReadEmptyDocument()
        {
            var buf    = HexToBytes("0500000000");
            var ms     = new MemoryStream(buf);
            var reader = new BsonReader(ms, new BsonDocumentBuilder());

            var doc = (Document)reader.ReadObject();

            Assert.IsNotNull(doc);
        }
コード例 #4
0
        public void TestReadDocWithDocs()
        {
            //            Document doc = new Document().Append("a", new Document().Append("b", new Document().Append("c",new Document())));
            //            Console.WriteLine(ConvertDocToHex(doc));
            var buf    = HexToBytes("1D000000036100150000000362000D0000000363000500000000000000");
            var ms     = new MemoryStream(buf);
            var reader = new BsonReader(ms, new BsonDocumentBuilder());

            var doc = (Document)reader.ReadObject();

            Assert.IsNotNull(doc, "Document was null");
            Assert.AreEqual(buf.Length, reader.Position);
            Assert.IsTrue(doc.ContainsKey("a"));
        }
コード例 #5
0
        public void TestReadMultiElementDocument()
        {
            var buf    = HexToBytes("2D000000075F6964004A753AD8FAC16EA58B290351016100000000000000F03F02620005000000746573740000");
            var ms     = new MemoryStream(buf);
            var reader = new BsonReader(ms, new BsonDocumentBuilder());

            var doc = (Document)reader.ReadObject();

            Assert.IsNotNull(doc, "Document was null");
            Assert.IsTrue(doc.ContainsKey("_id"));
            Assert.IsTrue(doc.ContainsKey("a"));
            Assert.IsTrue(doc.ContainsKey("b"));
            Assert.AreEqual("4a753ad8fac16ea58b290351", (doc["_id"]).ToString());
            Assert.AreEqual(1, Convert.ToInt32(doc["a"]));
            Assert.AreEqual("test", doc["b"]);
        }
コード例 #6
0
        /// <summary>
        /// Reads the specified stream.
        /// </summary>
        /// <param name="stream">The stream.</param>
        public void Read(Stream stream)
        {
            stream = new BufferedStream(stream, 256);
            var reader = new BinaryReader(stream);

            Header         = ReadHeader(reader);
            ResponseFlag   = (ResponseFlags)reader.ReadInt32();
            CursorId       = reader.ReadInt64();
            StartingFrom   = reader.ReadInt32();
            NumberReturned = reader.ReadInt32();

            var breader   = new BsonReader(stream, _readerSettings);
            var documents = new List <T>();

            for (var num = 0; num < NumberReturned; num++)
            {
                documents.Add((T)breader.ReadObject());
            }

            Documents = documents.ToArray();
        }