AsyncFallbackPolicy<TResult>
public class AsyncFallbackPolicy<TResult> : AsyncPolicy<TResult>, IFallbackPolicy<TResult>, IFallbackPolicy, IsPolicy
using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
namespace Polly.Fallback
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(new byte[] {
0,
1
})]
public class AsyncFallbackPolicy<[System.Runtime.CompilerServices.Nullable(2)] TResult> : AsyncPolicy<TResult>, IFallbackPolicy<TResult>, IFallbackPolicy, IsPolicy
{
private Func<DelegateResult<TResult>, Context, Task> _onFallbackAsync;
private Func<DelegateResult<TResult>, Context, CancellationToken, Task<TResult>> _fallbackAction;
internal AsyncFallbackPolicy(PolicyBuilder<TResult> policyBuilder, Func<DelegateResult<TResult>, Context, Task> onFallbackAsync, Func<DelegateResult<TResult>, Context, CancellationToken, Task<TResult>> fallbackAction)
: base(policyBuilder)
{
if (onFallbackAsync == null)
throw new ArgumentNullException("onFallbackAsync");
_onFallbackAsync = onFallbackAsync;
if (fallbackAction == null)
throw new ArgumentNullException("fallbackAction");
_fallbackAction = fallbackAction;
}
[DebuggerStepThrough]
protected override Task<TResult> ImplementationAsync(Func<Context, CancellationToken, Task<TResult>> action, Context context, CancellationToken cancellationToken, bool continueOnCapturedContext)
{
return AsyncFallbackEngine.ImplementationAsync<TResult>(action, context, cancellationToken, base.ExceptionPredicates, base.ResultPredicates, _onFallbackAsync, _fallbackAction, continueOnCapturedContext);
}
}
}