Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
        }
Esempio n. 6
0
        public static Response DefaultWaitForCompletionResponse(this Operation operation, TimeSpan pollingInterval, CancellationToken cancellationToken)
        {
            OperationPoller poller = new OperationPoller();

            return(poller.WaitForCompletionResponse(operation, pollingInterval, cancellationToken));
        }
Esempio n. 7
0
        public static Response DefaultWaitForCompletionResponse(this Operation operation, CancellationToken cancellationToken)
        {
            OperationPoller poller = new OperationPoller();

            return(poller.WaitForCompletionResponse(operation, null, cancellationToken));
        }
Esempio n. 8
0
        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));
        }