<PackageReference Include="Polly.Core" Version="8.0.0-alpha.1" />

RetryResilienceStrategy

using Polly.Telemetry; using Polly.Utils; using System; using System.Runtime.CompilerServices; using System.Threading.Tasks; namespace Polly.Retry { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] internal sealed class RetryResilienceStrategy : ResilienceStrategy { private readonly TimeProvider _timeProvider; private readonly ResilienceStrategyTelemetry _telemetry; private readonly RandomUtil _randomUtil; public TimeSpan BaseDelay { get; } public RetryBackoffType BackoffType { get; } public int RetryCount { get; } public PredicateInvoker<ShouldRetryArguments> ShouldRetry { get; } [System.Runtime.CompilerServices.Nullable(2)] [field: System.Runtime.CompilerServices.Nullable(2)] public GeneratorInvoker<RetryDelayArguments, TimeSpan> DelayGenerator { [System.Runtime.CompilerServices.NullableContext(2)] get; } [System.Runtime.CompilerServices.Nullable(2)] [field: System.Runtime.CompilerServices.Nullable(2)] public EventInvoker<OnRetryArguments> OnRetry { [System.Runtime.CompilerServices.NullableContext(2)] get; } public RetryResilienceStrategy(TimeSpan baseDelay, RetryBackoffType backoffType, int retryCount, PredicateInvoker<ShouldRetryArguments> shouldRetry, [System.Runtime.CompilerServices.Nullable(2)] EventInvoker<OnRetryArguments> onRetry, [System.Runtime.CompilerServices.Nullable(2)] GeneratorInvoker<RetryDelayArguments, TimeSpan> delayGenerator, TimeProvider timeProvider, ResilienceStrategyTelemetry telemetry, RandomUtil randomUtil) { BaseDelay = baseDelay; BackoffType = backoffType; RetryCount = retryCount; ShouldRetry = shouldRetry; OnRetry = onRetry; DelayGenerator = delayGenerator; _timeProvider = timeProvider; _telemetry = telemetry; _randomUtil = randomUtil; } [AsyncStateMachine(typeof(<ExecuteCoreAsync>d__22<, >))] [return: System.Runtime.CompilerServices.Nullable(new byte[] { 0, 0, 1 })] protected internal override ValueTask<Outcome<TResult>> ExecuteCoreAsync<[System.Runtime.CompilerServices.Nullable(2)] TResult, [System.Runtime.CompilerServices.Nullable(2)] TState>([System.Runtime.CompilerServices.Nullable(new byte[] { 1, 1, 1, 0, 0, 1 })] Func<ResilienceContext, TState, ValueTask<Outcome<TResult>>> callback, ResilienceContext context, TState state) { <ExecuteCoreAsync>d__22<TResult, TState> stateMachine = default(<ExecuteCoreAsync>d__22<TResult, TState>); stateMachine.<>t__builder = AsyncValueTaskMethodBuilder<Outcome<TResult>>.Create(); stateMachine.<>4__this = this; stateMachine.callback = callback; stateMachine.context = context; stateMachine.state = state; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } private bool IsLastAttempt(int attempt) { if (RetryCount == -1) return false; return attempt >= RetryCount; } } }