// private methods private void Initialize(CancellationToken cancellationToken) { _channelSource = _binding.GetWriteChannelSource(cancellationToken); var serverDescription = _channelSource.ServerDescription; try { _channel = _channelSource.GetChannel(cancellationToken); } catch (Exception ex) when(RetryableWriteOperationExecutor.ShouldConnectionAcquireBeRetried(this, serverDescription, ex)) { ReplaceChannelSource(_binding.GetWriteChannelSource(cancellationToken)); ReplaceChannel(_channelSource.GetChannel(cancellationToken)); } }
// methods public bool Execute(IWriteBinding binding, CancellationToken cancellationToken) { using (var channelSource = binding.GetWriteChannelSource(cancellationToken)) { var collectionNamespace = new CollectionNamespace(_databaseNamespace, "system.users"); var user = FindUser(channelSource, binding.Session, collectionNamespace, cancellationToken); if (user == null) { user = new BsonDocument { { "_id", ObjectId.GenerateNewId() }, { "user", _username }, { "pwd", _passwordHash }, { "readOnly", _readOnly }, }; InsertUser(channelSource, binding.Session, collectionNamespace, user, cancellationToken); } else { user["pwd"] = _passwordHash; user["readOnly"] = _readOnly; UpdateUser(channelSource, binding.Session, collectionNamespace, user, cancellationToken); } } return(true); }
// public methods /// <inheritdoc/> public IEnumerable <WriteConcernResult> Execute(IWriteBinding binding, CancellationToken cancellationToken) { Ensure.IsNotNull(binding, nameof(binding)); using (EventContext.BeginOperation()) using (var channelSource = binding.GetWriteChannelSource(cancellationToken)) using (var channel = channelSource.GetChannel(cancellationToken)) { if (SupportedFeatures.AreWriteCommandsSupported(channel.ConnectionDescription.ServerVersion) && _writeConcern.IsAcknowledged) { var emulator = CreateEmulator(); var result = emulator.Execute(channel, cancellationToken); return(new[] { result }); } else { if (_documentSource.Batch == null) { return(InsertMultipleBatches(channel, cancellationToken)); } else { var result = InsertSingleBatch(channel, cancellationToken); return(new[] { result }); } } } }
public BulkWriteOperationResult Execute(IWriteBinding binding, CancellationToken cancellationToken) { using (var channelSource = binding.GetWriteChannelSource(cancellationToken)) using (var channel = channelSource.GetChannel(cancellationToken)) { return(Execute(channel, cancellationToken)); } }
/// <inheritdoc/> public BsonDocument Execute(IWriteBinding binding, CancellationToken cancellationToken) { using (var channelSource = binding.GetWriteChannelSource(cancellationToken)) using (var channel = channelSource.GetChannel(cancellationToken)) using (var channelBinding = new ChannelReadWriteBinding(channelSource.Server, channel, binding.Session)) { var operation = CreateWriteOperation(channel.ConnectionDescription, binding.Session); return(operation.Execute(channelBinding, cancellationToken)); } }
// methods /// <inheritdoc/> public TCommandResult Execute(IWriteBinding binding, CancellationToken cancellationToken) { Ensure.IsNotNull(binding, nameof(binding)); using (EventContext.BeginOperation()) using (var channelSource = binding.GetWriteChannelSource(cancellationToken)) { return(ExecuteProtocol(channelSource, ReadPreference.Primary, cancellationToken)); } }
// public methods /// <inheritdoc/> public BsonDocument Execute(IWriteBinding binding, CancellationToken cancellationToken) { using (EventContext.BeginOperation()) using (var channelSource = binding.GetWriteChannelSource(cancellationToken)) using (var channel = channelSource.GetChannel(cancellationToken)) using (var channelBinding = new ChannelReadWriteBinding(channelSource.Server, channel)) { var operation = CreateOperation(channel); return(operation.Execute(channelBinding, cancellationToken)); } }
// public methods /// <inheritdoc/> public BsonDocument Execute(IWriteBinding binding, CancellationToken cancellationToken) { using (EventContext.BeginOperation()) using (var channelSource = binding.GetWriteChannelSource(cancellationToken)) using (var channel = channelSource.GetChannel(cancellationToken)) using (var channelBinding = new ChannelReadWriteBinding(channelSource.Server, channel, binding.Session.Fork())) { var operation = CreateOperation(channel.ConnectionDescription.ServerVersion); var result = operation.Execute(channelBinding, cancellationToken); WriteConcernErrorHelper.ThrowIfHasWriteConcernError(channel.ConnectionDescription.ConnectionId, result); return(result); } }
// private methods private void Initialize(CancellationToken cancellationToken) { _channelSource = _binding.GetWriteChannelSource(cancellationToken); var serverDescription = _channelSource.ServerDescription; try { _channel = _channelSource.GetChannel(cancellationToken); } catch (MongoConnectionPoolPausedException) { if (RetryableWriteOperationExecutor.ShouldConnectionAcquireBeRetried(this, serverDescription)) { ReplaceChannelSource(_binding.GetWriteChannelSource(cancellationToken)); ReplaceChannel(_channelSource.GetChannel(cancellationToken)); } else { throw; } } }
// methods public bool Execute(IWriteBinding binding, CancellationToken cancellationToken) { using (var channelSource = binding.GetWriteChannelSource(cancellationToken)) using (var channel = channelSource.GetChannel(cancellationToken)) using (var channelBinding = new ChannelReadWriteBinding(channelSource.Server, channel, binding.Session.Fork())) { var operation = new DropUserUsingUserManagementCommandsOperation( _databaseNamespace, _username, _messageEncoderSettings); return(operation.Execute(channelBinding, cancellationToken)); } }
// methods /// <inheritdoc/> public BsonDocument Execute(IWriteBinding binding, CancellationToken cancellationToken) { Ensure.IsNotNull(binding, nameof(binding)); var mayUseSecondary = new MayUseSecondary(_readPreference); using (var channelSource = binding.GetWriteChannelSource(mayUseSecondary, cancellationToken)) using (var channel = channelSource.GetChannel(cancellationToken)) using (var channelBinding = new ChannelReadWriteBinding(channelSource.Server, channel, binding.Session.Fork())) { var operation = CreateOperation(channelBinding.Session, channel.ConnectionDescription, mayUseSecondary.EffectiveReadPreference); return(operation.Execute(channelBinding, cancellationToken)); } }
// public methods /// <inheritdoc/> public TResult Execute(IWriteBinding binding, CancellationToken cancellationToken) { Ensure.IsNotNull(binding, nameof(binding)); using (var channelSource = binding.GetWriteChannelSource(cancellationToken)) using (var channel = channelSource.GetChannel(cancellationToken)) using (var channelBinding = new ChannelReadWriteBinding(channelSource.Server, channel)) { var operation = CreateOperation(channel.ConnectionDescription.ServerVersion); using (var rawBsonDocument = operation.Execute(channelBinding, cancellationToken)) { return(ProcessCommandResult(channel.ConnectionDescription.ConnectionId, rawBsonDocument)); } } }
// methods public bool Execute(IWriteBinding binding, CancellationToken cancellationToken) { using (var channelSource = binding.GetWriteChannelSource(cancellationToken)) using (var channel = channelSource.GetChannel(cancellationToken)) using (var channelBinding = new ChannelReadWriteBinding(channelSource.Server, channel, binding.Session.Fork())) { IWriteOperation <bool> operation; if (Feature.UserManagementCommands.IsSupported(channel.ConnectionDescription.ServerVersion)) { operation = new AddUserUsingUserManagementCommandsOperation(_databaseNamespace, _username, _passwordHash, _readOnly, _messageEncoderSettings); } else { operation = new AddUserUsingSystemUsersCollectionOperation(_databaseNamespace, _username, _passwordHash, _readOnly, _messageEncoderSettings); } return(operation.Execute(channelBinding, cancellationToken)); } }
// methods public bool Execute(IWriteBinding binding, CancellationToken cancellationToken) { using (var channelSource = binding.GetWriteChannelSource(cancellationToken)) using (var channel = channelSource.GetChannel(cancellationToken)) using (var channelBinding = new ChannelReadWriteBinding(channelSource.Server, channel)) { IWriteOperation <bool> operation; if (channel.ConnectionDescription.ServerVersion >= __serverVersionSupportingUserManagementCommands) { operation = new DropUserUsingUserManagementCommandsOperation(_databaseNamespace, _username, _messageEncoderSettings); } else { operation = new DropUserUsingSystemUsersCollectionOperation(_databaseNamespace, _username, _messageEncoderSettings); } return(operation.Execute(channelBinding, cancellationToken)); } }
/// <inheritdoc/> public IChannelSourceHandle GetWriteChannelSource(CancellationToken cancellationToken) { ThrowIfDisposed(); return(_writeBinding.GetWriteChannelSource(cancellationToken)); }