Tortuga.Chain.PostgreSqlDataSource.ExecuteAsync C# (CSharp) Method

ExecuteAsync() protected method

execute as an asynchronous operation.
/// executionToken;executionToken is null. /// or /// implementation;implementation is null. ///
protected ExecuteAsync ( NpgsqlTransaction>.OperationExecutionToken executionToken, NpgsqlTransaction>.OperationImplementationAsync implementation, CancellationToken cancellationToken, object state ) : Task
executionToken NpgsqlTransaction>.OperationExecutionToken The execution token.
implementation NpgsqlTransaction>.OperationImplementationAsync The implementation.
cancellationToken System.Threading.CancellationToken The cancellation token.
state object The state.
return Task
        protected override async Task<int?> ExecuteAsync(OperationExecutionToken<NpgsqlConnection, NpgsqlTransaction> executionToken, OperationImplementationAsync<NpgsqlConnection, NpgsqlTransaction> implementation, CancellationToken cancellationToken, object state)
        {
            if (executionToken == null)
                throw new ArgumentNullException("executionToken", "executionToken is null.");
            if (implementation == null)
                throw new ArgumentNullException("implementation", "implementation is null.");

            var startTime = DateTimeOffset.Now;
            OnExecutionStarted(executionToken, startTime, state);

            try
            {
                using (var con = CreateConnection())
                {
                    var rows = await implementation(con, null, cancellationToken).ConfigureAwait(false);
                    OnExecutionFinished(executionToken, startTime, DateTimeOffset.Now, rows, state);
                    return rows;
                }
            }
            catch (Exception ex)
            {
                if (cancellationToken.IsCancellationRequested) //convert Exception into a OperationCanceledException 
                {
                    var ex2 = new OperationCanceledException("Operation was canceled.", ex, cancellationToken);
                    OnExecutionCanceled(executionToken, startTime, DateTimeOffset.Now, state);
                    throw ex2;
                }
                else
                {
                    OnExecutionError(executionToken, startTime, DateTimeOffset.Now, ex, state);
                    throw;
                }
            }
        }

Same methods

PostgreSqlDataSource::ExecuteAsync ( NpgsqlParameter>.CommandExecutionToken executionToken, CommandImplementationAsync implementation, CancellationToken cancellationToken, object state ) : Task