コード例 #1
0
        private IEnumerable <BsonValue> MaterializeThisLevel()
        {
            var values         = new List <BsonValue>();
            var readerSettings = _readerSettings.Clone();

            readerSettings.MaxDocumentSize = _slice.Length;

            using (var bsonReader = new BsonBinaryReader(new BsonBuffer(CloneSlice(), true), true, readerSettings))
            {
                bsonReader.ReadStartDocument();
                BsonType bsonType;
                while ((bsonType = bsonReader.ReadBsonType()) != BsonType.EndOfDocument)
                {
                    bsonReader.SkipName();
                    BsonValue value;
                    switch (bsonType)
                    {
                    case BsonType.Array: value = DeserializeLazyBsonArray(bsonReader); break;

                    case BsonType.Document: value = DeserializeLazyBsonDocument(bsonReader); break;

                    default: value = (BsonValue)BsonValueSerializer.Instance.Deserialize(bsonReader, typeof(BsonValue), null); break;
                    }
                    values.Add(value);
                }
                bsonReader.ReadEndDocument();
            }

            return(values);
        }
コード例 #2
0
        protected BsonBinaryReaderSettings GetNodeAdjustedReaderSettings(MongoServerInstance node)
        {
            var readerSettings = _readerSettings.Clone();

            readerSettings.MaxDocumentSize = node.MaxDocumentSize;
            return(readerSettings);
        }