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); }
protected BsonBinaryReaderSettings GetNodeAdjustedReaderSettings(MongoServerInstance node) { var readerSettings = _readerSettings.Clone(); readerSettings.MaxDocumentSize = node.MaxDocumentSize; return(readerSettings); }