private void WriteUpdate(BsonBinaryWriter binaryWriter, BsonDocument update, IElementNameValidator updateValidator) { binaryWriter.PushElementNameValidator(updateValidator); try { var position = binaryWriter.BaseStream.Position; var context = BsonSerializationContext.CreateRoot(binaryWriter); BsonDocumentSerializer.Instance.Serialize(context, update); if (updateValidator is UpdateElementNameValidator && binaryWriter.BaseStream.Position == position + 5) { throw new BsonSerializationException("Update documents cannot be empty."); } } finally { binaryWriter.PopElementNameValidator(); } }
private void SerializeUpdate(BsonBinaryWriter bsonWriter, BsonDocument update) { var updateValidator = new UpdateOrReplacementElementNameValidator(); bsonWriter.PushElementNameValidator(updateValidator); try { var context = BsonSerializationContext.CreateRoot<BsonDocument>(bsonWriter); BsonDocumentSerializer.Instance.Serialize(context, update); } finally { bsonWriter.PopElementNameValidator(); } }
private void SerializeUpdate(BsonBinaryWriter bsonWriter, BsonDocument update, UpdateType updateType) { bsonWriter.PushElementNameValidator(ElementNameValidatorFactory.ForUpdateType(updateType)); try { var position = bsonWriter.BaseStream.Position; var context = BsonSerializationContext.CreateRoot(bsonWriter); BsonDocumentSerializer.Instance.Serialize(context, update); if (updateType == UpdateType.Update && bsonWriter.BaseStream.Position == position + 8) { throw new BsonSerializationException("Update documents cannot be empty."); } } finally { bsonWriter.PopElementNameValidator(); } }
private void WriteQuery(BsonBinaryWriter binaryWriter, BsonDocument query, IElementNameValidator queryValidator) { binaryWriter.PushElementNameValidator(queryValidator); try { var context = BsonSerializationContext.CreateRoot(binaryWriter); BsonDocumentSerializer.Instance.Serialize(context, query ?? new BsonDocument()); } finally { binaryWriter.PopElementNameValidator(); } }
private void SerializeUpdate(BsonBinaryWriter bsonWriter, BsonDocument update, UpdateType updateType) { bsonWriter.PushElementNameValidator(ElementNameValidatorFactory.ForUpdateType(updateType)); try { var context = BsonSerializationContext.CreateRoot<BsonDocument>(bsonWriter); BsonDocumentSerializer.Instance.Serialize(context, update); } finally { bsonWriter.PopElementNameValidator(); } }