private Task <TResult> ExecuteReadOnlyAsync <TState, TIntermediate, TResult>(TState state, Delegate handler, Delegate?success, CancellationToken ct) { Contract.NotNull(handler, nameof(handler)); if (ct.IsCancellationRequested) { return(Task.FromCanceled <TResult>(ct)); } ThrowIfDisposed(); var context = new FdbOperationContext(this, FdbTransactionMode.ReadOnly | FdbTransactionMode.InsideRetryLoop, ct); return(FdbOperationContext.ExecuteInternal <TState, TIntermediate, TResult>(context, state, handler, success)); }
private Task <TResult> ExecuteReadWriteAsync <TState, TIntermediate, TResult>(TState state, Delegate handler, Delegate?success, CancellationToken ct) { Contract.NotNull(handler, nameof(handler)); if (ct.IsCancellationRequested) { return(Task.FromCanceled <TResult>(ct)); } ThrowIfDisposed(); if (m_readOnly) { throw new InvalidOperationException("Cannot mutate a read-only database."); } var context = new FdbOperationContext(this, FdbTransactionMode.Default | FdbTransactionMode.InsideRetryLoop, ct); return(FdbOperationContext.ExecuteInternal <TState, TIntermediate, TResult>(context, state, handler, success)); }