private async Task <IExecutionResult> ExecuteMutationAsync( IExecutionContext executionContext, CancellationToken cancellationToken) { BatchOperationHandler batchOperationHandler = CreateBatchOperationHandler(executionContext); try { IReadOnlyList <ResolverTask> rootResolverTasks = CreateRootResolverTasks( executionContext, executionContext.Result.Data); await ExecuteResolverBatchSeriallyAsync( executionContext, rootResolverTasks, batchOperationHandler, cancellationToken) .ConfigureAwait(false); EnsureRootValueNonNullState( executionContext.Result, rootResolverTasks); return(executionContext.Result); } finally { batchOperationHandler?.Dispose(); } }
private async Task <IReadOnlyQueryResult> ExecuteSubscriptionQueryAsync( IExecutionContext executionContext, CancellationToken cancellationToken) { BatchOperationHandler batchOperationHandler = CreateBatchOperationHandler(executionContext); var requestTimeoutCts = new CancellationTokenSource( _options.ExecutionTimeout); try { using (var combinedCts = CancellationTokenSource .CreateLinkedTokenSource( requestTimeoutCts.Token, cancellationToken)) { IQueryResult result = await ExecuteQueryAsync( executionContext, batchOperationHandler, cancellationToken) .ConfigureAwait(false); return(result.AsReadOnly()); } } finally { batchOperationHandler?.Dispose(); requestTimeoutCts.Dispose(); } }
private async Task <IExecutionResult> ExecuteMutationAsync( IExecutionContext executionContext, CancellationToken cancellationToken) { ResolverContext[] initialBatch = CreateInitialBatch(executionContext, executionContext.Result.Data); BatchOperationHandler batchOperationHandler = CreateBatchOperationHandler(executionContext); try { await ExecuteResolverBatchSeriallyAsync( executionContext, initialBatch, batchOperationHandler, cancellationToken) .ConfigureAwait(false); EnsureRootValueNonNullState( executionContext.Result, initialBatch); return(executionContext.Result); } finally { batchOperationHandler?.Dispose(); ResolverContext.Return(initialBatch); ArrayPool <ResolverContext> .Shared.Return(initialBatch); } }
private static async Task <IExecutionResult> ExecuteInternalAsync( IExecutionContext executionContext, CancellationToken cancellationToken) { BatchOperationHandler batchOperationHandler = CreateBatchOperationHandler(executionContext); try { return(await ExecuteQueryAsync( executionContext, batchOperationHandler, cancellationToken) .ConfigureAwait(false)); } finally { batchOperationHandler?.Dispose(); } }