public async Task <BulkWriteOperationResult> ExecuteAsync(IWriteBinding binding, TimeSpan timeout, CancellationToken cancellationToken)
        {
            var slidingTimeout = new SlidingTimeout(timeout);

            using (var connectionSource = await binding.GetWriteConnectionSourceAsync(slidingTimeout, cancellationToken))
                using (var connection = await connectionSource.GetConnectionAsync(slidingTimeout, cancellationToken))
                {
                    return(await ExecuteAsync(connection, slidingTimeout, cancellationToken));
                }
        }
        public async Task <WriteConcernResult> ExecuteAsync(IWriteBinding binding, TimeSpan timeout = default(TimeSpan), CancellationToken cancellationToken = default(CancellationToken))
        {
            Ensure.IsNotNull(binding, "binding");
            var slidingTimeout = new SlidingTimeout(timeout);

            using (var connectionSource = await binding.GetWriteConnectionSourceAsync(slidingTimeout, cancellationToken))
                using (var connection = await connectionSource.GetConnectionAsync(slidingTimeout, cancellationToken))
                {
                    return(await ExecuteAsync(connection, slidingTimeout, cancellationToken));
                }
        }
예제 #3
0
        public static async Task <TResult> ExecuteAsync <TResult>(
            this IWireProtocol <TResult> protocol,
            IWriteBinding binding,
            TimeSpan timeout = default(TimeSpan),
            CancellationToken cancellationToken = default(CancellationToken))
        {
            Ensure.IsNotNull(protocol, "protocol");
            var slidingTimeout = new SlidingTimeout(timeout);

            using (var connectionSource = await binding.GetWriteConnectionSourceAsync(slidingTimeout, cancellationToken))
                using (var connection = await connectionSource.GetConnectionAsync(slidingTimeout, cancellationToken))
                {
                    return(await protocol.ExecuteAsync(connection, slidingTimeout, cancellationToken));
                }
        }
예제 #4
0
        // methods
        public async Task <Cursor <BsonDocument> > ExecuteAsync(IWriteBinding binding, TimeSpan timeout = default(TimeSpan), CancellationToken cancellationToken = default(CancellationToken))
        {
            Ensure.IsNotNull(binding, "binding");

            var slidingTimeout = new SlidingTimeout(timeout);

            using (var connectionSource = await binding.GetWriteConnectionSourceAsync(slidingTimeout, cancellationToken))
            {
                var command   = CreateCommand();
                var operation = new WriteCommandOperation(CollectionNamespace.DatabaseNamespace, command, MessageEncoderSettings);
                var result    = await operation.ExecuteAsync(connectionSource, slidingTimeout, cancellationToken);

                return(CreateCursor(connectionSource, command, result, timeout, cancellationToken));
            }
        }
 public Task <IConnectionSourceHandle> GetWriteConnectionSourceAsync(TimeSpan timeout, System.Threading.CancellationToken cancellationToken)
 {
     ThrowIfDisposed();
     return(_writeBinding.GetWriteConnectionSourceAsync(timeout, cancellationToken));
 }
예제 #6
0
 // static methods
 public static IConnectionSource GetWriteConnectionSource(this IWriteBinding binding, TimeSpan timeout = default(TimeSpan), CancellationToken cancellationToken = default(CancellationToken))
 {
     return(binding.GetWriteConnectionSourceAsync(timeout, cancellationToken).GetAwaiter().GetResult());
 }