<PackageReference Include="System.ClientModel" Version="1.2.0" />

PollingInterval

sealed class PollingInterval
using System.ClientModel.Primitives; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; namespace System.ClientModel.Internal { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] internal sealed class PollingInterval { private static readonly TimeSpan DefaultDelay = TimeSpan.FromSeconds(1); private readonly TimeSpan _interval; public PollingInterval(TimeSpan? interval = default(TimeSpan?)) { _interval = (interval ?? DefaultDelay); } [AsyncStateMachine(typeof(<WaitAsync>d__3))] public Task WaitAsync(PipelineResponse response, CancellationToken cancellationToken) { <WaitAsync>d__3 stateMachine = default(<WaitAsync>d__3); stateMachine.<>t__builder = AsyncTaskMethodBuilder.Create(); stateMachine.<>4__this = this; stateMachine.response = response; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public void Wait(PipelineResponse response, CancellationToken cancellationToken) { TimeSpan delay = GetDelay(response); if (!cancellationToken.CanBeCanceled) Thread.Sleep(delay); else if (cancellationToken.WaitHandle.WaitOne(delay)) { cancellationToken.ThrowIfCancellationRequested(); } } private TimeSpan GetDelay(PipelineResponse response) { if (!PipelineResponseHeaders.TryGetRetryAfter(response, out TimeSpan value) || !(value > _interval)) return _interval; return value; } } }