Esempio n. 1
0
        private Task <WriteConcernResult> ExecuteProtocolAsync(IChannelHandle channel, CancellationToken cancellationToken)
        {
            if (_request.Collation != null)
            {
                throw new NotSupportedException("OP_UPDATE does not support collations.");
            }
            if (_request.ArrayFilters != null)
            {
                throw new NotSupportedException("OP_UPDATE does not support arrayFilters.");
            }
            if (_request.Hint != null)
            {
                throw new NotSupportedException("OP_UPDATE does not support hints.");
            }

            return(channel.UpdateAsync(
                       _collectionNamespace,
                       _messageEncoderSettings,
                       _writeConcern,
                       _request.Filter,
                       _request.Update.AsBsonDocument,
                       ElementNameValidatorFactory.ForUpdateType(_request.UpdateType),
                       _request.IsMulti,
                       _request.IsUpsert,
                       cancellationToken));
        }
 // methods
 private Task <WriteConcernResult> ExecuteProtocolAsync(IChannelHandle channel, CancellationToken cancellationToken)
 {
     return(channel.UpdateAsync(
                _collectionNamespace,
                _messageEncoderSettings,
                _writeConcern,
                _request.Filter,
                _request.Update,
                ElementNameValidatorFactory.ForUpdateType(_request.UpdateType),
                _request.IsMulti,
                _request.IsUpsert,
                cancellationToken));
 }
 private void SerializeUpdate(BsonBinaryWriter bsonWriter, BsonDocument update, UpdateType updateType)
 {
     bsonWriter.PushElementNameValidator(ElementNameValidatorFactory.ForUpdateType(updateType));
     try
     {
         var context = BsonSerializationContext.CreateRoot(bsonWriter);
         BsonDocumentSerializer.Instance.Serialize(context, update);
     }
     finally
     {
         bsonWriter.PopElementNameValidator();
     }
 }
        // methods
        private UpdateWireProtocol CreateProtocol()
        {
            var updateValidator = new UpdateOrReplacementElementNameValidator();

            return(new UpdateWireProtocol(
                       _collectionNamespace,
                       _messageEncoderSettings,
                       _writeConcern,
                       _request.Criteria,
                       _request.Update,
                       ElementNameValidatorFactory.ForUpdateType(_request.UpdateType),
                       _request.IsMulti,
                       _request.IsUpsert));
        }
        // methods
        protected override IWireProtocol <WriteConcernResult> CreateProtocol(IConnectionHandle connection, WriteRequest request)
        {
            var updateRequest = (UpdateRequest)request;

            return(new UpdateWireProtocol(
                       CollectionNamespace,
                       MessageEncoderSettings,
                       WriteConcern,
                       updateRequest.Criteria,
                       updateRequest.Update,
                       ElementNameValidatorFactory.ForUpdateType(updateRequest.UpdateType),
                       updateRequest.IsMulti,
                       updateRequest.IsUpsert));
        }
Esempio n. 6
0
        // methods
        protected override Task <WriteConcernResult> ExecuteProtocolAsync(IChannelHandle channel, WriteRequest request, CancellationToken cancellationToken)
        {
            var updateRequest = (UpdateRequest)request;

            return(channel.UpdateAsync(
                       CollectionNamespace,
                       MessageEncoderSettings,
                       WriteConcern,
                       updateRequest.Filter,
                       updateRequest.Update,
                       ElementNameValidatorFactory.ForUpdateType(updateRequest.UpdateType),
                       updateRequest.IsMulti,
                       updateRequest.IsUpsert,
                       cancellationToken));
        }
 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 WriteConcernResult ExecuteProtocol(IChannelHandle channel, CancellationToken cancellationToken)
        {
            if (_request.Collation != null)
            {
                throw new NotSupportedException("OP_UPDATE does not support collations.");
            }

            return(channel.Update(
                       _collectionNamespace,
                       _messageEncoderSettings,
                       _writeConcern,
                       _request.Filter,
                       _request.Update,
                       ElementNameValidatorFactory.ForUpdateType(_request.UpdateType),
                       _request.IsMulti,
                       _request.IsUpsert,
                       cancellationToken));
        }
Esempio n. 9
0
            // private methods
            private void SerializeUpdate(BsonSerializationContext context, BsonSerializationArgs args, UpdateRequest request)
            {
                var writer = context.Writer;

                writer.PushElementNameValidator(ElementNameValidatorFactory.ForUpdateType(request.UpdateType));
                try
                {
                    var position = writer.Position;
                    BsonDocumentSerializer.Instance.Serialize(context, request.Update);
                    if (request.UpdateType == UpdateType.Update && writer.Position == position + 8)
                    {
                        throw new BsonSerializationException("Update documents cannot be empty.");
                    }
                }
                finally
                {
                    writer.PopElementNameValidator();
                }
            }
Esempio n. 10
0
        protected override Task <WriteConcernResult> ExecuteProtocolAsync(IChannelHandle channel, WriteRequest request, CancellationToken cancellationToken)
        {
            var updateRequest = (UpdateRequest)request;

            if (updateRequest.Collation != null)
            {
                throw new NotSupportedException("BulkUpdateOperationEmulator does not support collations.");
            }

            return(channel.UpdateAsync(
                       CollectionNamespace,
                       MessageEncoderSettings,
                       WriteConcern,
                       updateRequest.Filter,
                       updateRequest.Update,
                       ElementNameValidatorFactory.ForUpdateType(updateRequest.UpdateType),
                       updateRequest.IsMulti,
                       updateRequest.IsUpsert,
                       cancellationToken));
        }
Esempio n. 11
0
        // methods
        protected override WriteConcernResult ExecuteProtocol(IChannelHandle channel, UpdateRequest request, CancellationToken cancellationToken)
        {
            if (request.Collation != null)
            {
                throw new NotSupportedException("BulkUpdateOperationEmulator does not support collations.");
            }
            if (request.ArrayFilters != null)
            {
                throw new NotSupportedException("BulkUpdateOperationEmulator does not support arrayFilters.");
            }

            return(channel.Update(
                       CollectionNamespace,
                       MessageEncoderSettings,
                       WriteConcern,
                       request.Filter,
                       request.Update,
                       ElementNameValidatorFactory.ForUpdateType(request.UpdateType),
                       request.IsMulti,
                       request.IsUpsert,
                       cancellationToken));
        }