public static async Task <TResult> ExecuteAsync <TResult>(
     this IWriteOperation <TResult> operation,
     IConnectionSourceHandle connectionSource,
     TimeSpan timeout,
     CancellationToken cancellationToken)
 {
     Ensure.IsNotNull(operation, "operation");
     using (var writeBinding = new ConnectionSourceReadWriteBinding(connectionSource.Fork(), ReadPreference.Primary))
     {
         return(await operation.ExecuteAsync(writeBinding, timeout, cancellationToken).ConfigureAwait(false));
     }
 }
Exemplo n.º 2
0
 private AsyncCursor <TResult> CreateCursorFromCursorResult(IConnectionSourceHandle connectionSource, BsonDocument command, AggregateResult result, TimeSpan timeout, CancellationToken cancellationToken)
 {
     return(new AsyncCursor <TResult>(
                connectionSource.Fork(),
                CollectionNamespace,
                command,
                result.Results,
                result.CursorId.GetValueOrDefault(0),
                _batchSize ?? 0,
                0, // limit
                _resultSerializer,
                MessageEncoderSettings,
                timeout,
                cancellationToken));
 }
Exemplo n.º 3
0
        private Cursor <BsonDocument> CreateCursorFromCursorResult(IConnectionSourceHandle connectionSource, BsonDocument command, BsonDocument result, TimeSpan timeout, CancellationToken cancellationToken)
        {
            var firstBatch = ((BsonArray)result["cursor"]["firstBatch"]).Cast <BsonDocument>().ToList();
            var cursorId   = result["cursor"]["id"].ToInt64();

            return(new Cursor <BsonDocument>(
                       connectionSource.Fork(),
                       DatabaseName,
                       CollectionName,
                       command,
                       firstBatch,
                       cursorId,
                       _batchSize ?? 0,
                       BsonDocumentSerializer.Instance,
                       timeout,
                       cancellationToken));
        }
        private Cursor<BsonDocument> CreateCursorFromCursorResult(IConnectionSourceHandle connectionSource, BsonDocument command, BsonDocument result, TimeSpan timeout, CancellationToken cancellationToken)
        {
            var firstBatch = ((BsonArray)result["cursor"]["firstBatch"]).Cast<BsonDocument>().ToList();
            var cursorId = result["cursor"]["id"].ToInt64();

            return new Cursor<BsonDocument>(
                connectionSource.Fork(),
                CollectionNamespace,
                command,
                firstBatch,
                cursorId,
                _batchSize ?? 0,
                0, // limit
                BsonDocumentSerializer.Instance,
                MessageEncoderSettings,
                timeout,
                cancellationToken);
        }
 // methods
 public Task <IConnectionSourceHandle> GetReadConnectionSourceAsync(TimeSpan timeout, CancellationToken cancellationToken)
 {
     ThrowIfDisposed();
     return(Task.FromResult(_connectionSource.Fork()));
 }