/// <inheritdoc/> public async Task <BsonDocument> ExecuteAsync(IWriteBinding binding, CancellationToken cancellationToken) { Ensure.IsNotNull(binding, nameof(binding)); var mayUseSecondary = new MayUseSecondary(_readPreference); using (var channelSource = await binding.GetWriteChannelSourceAsync(mayUseSecondary, cancellationToken).ConfigureAwait(false)) using (var channel = await channelSource.GetChannelAsync(cancellationToken).ConfigureAwait(false)) using (var channelBinding = new ChannelReadWriteBinding(channelSource.Server, channel, binding.Session.Fork())) { var operation = CreateOperation(channelBinding.Session, channel.ConnectionDescription, mayUseSecondary.EffectiveReadPreference); return(await operation.ExecuteAsync(channelBinding, cancellationToken).ConfigureAwait(false)); } }
// 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)); } }