public static Response <TResult> DefaultWaitForCompletion <TResult>(this Operation <TResult> operation, TimeSpan pollingInterval, CancellationToken cancellationToken) where TResult : notnull { OperationPoller poller = new OperationPoller(); return(poller.WaitForCompletion(operation, pollingInterval, cancellationToken)); }
public static async ValueTask <Response <TResult> > DefaultWaitForCompletionAsync <TResult>(this Operation <TResult> operation, TimeSpan pollingInterval, CancellationToken cancellationToken) where TResult : notnull { OperationPoller poller = new OperationPoller(); return(await poller.WaitForCompletionAsync(operation, pollingInterval, cancellationToken).ConfigureAwait(false)); }
private async ValueTask <Response> WaitForCompletionResponseAsync(bool async, TimeSpan?pollingInterval, CancellationToken cancellationToken) { // If _responseLock has the value, lockOrValue will contain that value, and no lock is acquired. // If _responseLock doesn't have the value, GetLockOrValueAsync will acquire the lock that will be released when lockOrValue is disposed using var lockOrValue = await _responseLock.GetLockOrValueAsync(async, cancellationToken).ConfigureAwait(false); if (lockOrValue.HasValue) { return(lockOrValue.Value); } var poller = new OperationPoller(_fallbackStrategy); var response = async ? await poller.WaitForCompletionResponseAsync(this, pollingInterval, cancellationToken).ConfigureAwait(false) : poller.WaitForCompletionResponse(this, pollingInterval, cancellationToken); lockOrValue.SetValue(response); return(response); }
public virtual Response WaitForCompletionResponse(TimeSpan pollingInterval, CancellationToken cancellationToken) { OperationPoller poller = new OperationPoller(_fallbackStrategy); return(poller.WaitForCompletionResponse(UpdateStatus, () => HasCompleted, () => RawResponse, pollingInterval, cancellationToken)); }
public virtual async ValueTask <Response> WaitForCompletionResponseAsync(TimeSpan pollingInterval, CancellationToken cancellationToken) { OperationPoller poller = new OperationPoller(_fallbackStrategy); return(await poller.WaitForCompletionResponseAsync(UpdateStatusAsync, () => HasCompleted, () => RawResponse, pollingInterval, cancellationToken).ConfigureAwait(false)); }
public static Response DefaultWaitForCompletionResponse(this Operation operation, TimeSpan pollingInterval, CancellationToken cancellationToken) { OperationPoller poller = new OperationPoller(); return(poller.WaitForCompletionResponse(operation, pollingInterval, cancellationToken)); }
public static Response DefaultWaitForCompletionResponse(this Operation operation, CancellationToken cancellationToken) { OperationPoller poller = new OperationPoller(); return(poller.WaitForCompletionResponse(operation, null, cancellationToken)); }
public static async ValueTask <Response> DefaultWaitForCompletionResponseAsync(this Operation operation, TimeSpan pollingInterval, CancellationToken cancellationToken) { OperationPoller poller = new OperationPoller(); return(await poller.WaitForCompletionResponseAsync(operation, pollingInterval, cancellationToken).ConfigureAwait(false)); }