FallbackSyntax
Fluent API for defining a Fallback policy.
using Polly.Fallback;
using System;
using System.Runtime.CompilerServices;
using System.Threading;
namespace Polly
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
public static class FallbackSyntax
{
public static FallbackPolicy Fallback(this PolicyBuilder policyBuilder, Action fallbackAction)
{
if (fallbackAction == null)
throw new ArgumentNullException("fallbackAction");
Action<Exception> onFallback = delegate {
};
return policyBuilder.Fallback(fallbackAction, onFallback);
}
public static FallbackPolicy Fallback(this PolicyBuilder policyBuilder, Action<CancellationToken> fallbackAction)
{
if (fallbackAction == null)
throw new ArgumentNullException("fallbackAction");
Action<Exception> onFallback = delegate {
};
return policyBuilder.Fallback(fallbackAction, onFallback);
}
public static FallbackPolicy Fallback(this PolicyBuilder policyBuilder, Action fallbackAction, Action<Exception> onFallback)
{
if (fallbackAction == null)
throw new ArgumentNullException("fallbackAction");
if (onFallback == null)
throw new ArgumentNullException("onFallback");
return policyBuilder.Fallback((Action<Exception, Context, CancellationToken>)delegate {
fallbackAction();
}, (Action<Exception, Context>)delegate(Exception exception, Context _) {
onFallback(exception);
});
}
public static FallbackPolicy Fallback(this PolicyBuilder policyBuilder, Action<CancellationToken> fallbackAction, Action<Exception> onFallback)
{
if (fallbackAction == null)
throw new ArgumentNullException("fallbackAction");
if (onFallback == null)
throw new ArgumentNullException("onFallback");
return policyBuilder.Fallback(delegate(Exception _, Context _, CancellationToken ct) {
fallbackAction(ct);
}, delegate(Exception exception, Context _) {
onFallback(exception);
});
}
public static FallbackPolicy Fallback(this PolicyBuilder policyBuilder, Action<Context> fallbackAction, Action<Exception, Context> onFallback)
{
if (fallbackAction == null)
throw new ArgumentNullException("fallbackAction");
if (onFallback == null)
throw new ArgumentNullException("onFallback");
return policyBuilder.Fallback(delegate(Exception _, Context ctx, CancellationToken _) {
fallbackAction(ctx);
}, onFallback);
}
public static FallbackPolicy Fallback(this PolicyBuilder policyBuilder, Action<Context, CancellationToken> fallbackAction, Action<Exception, Context> onFallback)
{
if (fallbackAction == null)
throw new ArgumentNullException("fallbackAction");
if (onFallback == null)
throw new ArgumentNullException("onFallback");
return policyBuilder.Fallback(delegate(Exception _, Context ctx, CancellationToken ct) {
fallbackAction(ctx, ct);
}, onFallback);
}
public static FallbackPolicy Fallback(this PolicyBuilder policyBuilder, Action<Exception, Context, CancellationToken> fallbackAction, Action<Exception, Context> onFallback)
{
if (fallbackAction == null)
throw new ArgumentNullException("fallbackAction");
if (onFallback == null)
throw new ArgumentNullException("onFallback");
return new FallbackPolicy(policyBuilder, onFallback, fallbackAction);
}
}
}