HedgingStrategyOptions<TResult>
Hedging strategy options.
using Polly.Utils;
using System;
using System.ComponentModel.DataAnnotations;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
namespace Polly.Hedging
{
public class HedgingStrategyOptions<[System.Runtime.CompilerServices.Nullable(2)] TResult> : ResilienceStrategyOptions
{
[System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
2,
0,
0,
1
})]
internal static readonly Func<HedgingActionGeneratorArguments<TResult>, Func<ValueTask<Outcome<TResult>>>> DefaultActionGenerator = (HedgingActionGeneratorArguments<TResult> args) => delegate {
if (args.PrimaryContext.IsSynchronous)
return new ValueTask<Outcome<TResult>>(Task.Run<Outcome<TResult>>((Func<Task<Outcome<TResult>>>)(() => args.Callback(args.ActionContext).AsTask())));
return args.Callback(args.ActionContext);
};
public TimeSpan Delay { get; set; } = HedgingConstants.DefaultHedgingDelay;
[Range(1, 10)]
public int MaxHedgedAttempts { get; set; } = 1;
[System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
0
})]
[Required]
[field: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
0
})]
public Func<HedgingPredicateArguments<TResult>, ValueTask<bool>> ShouldHandle {
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
0
})]
get;
[param: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
0
})]
set;
} = DefaultPredicates<HedgingPredicateArguments<TResult>, TResult>.HandleOutcome;
[System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
2,
0,
0,
1
})]
[Required]
[field: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
2,
0,
0,
1
})]
public Func<HedgingActionGeneratorArguments<TResult>, Func<ValueTask<Outcome<TResult>>>> ActionGenerator {
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
2,
0,
0,
1
})]
get;
[param: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
2,
0,
0,
1
})]
set;
} = DefaultActionGenerator;
[System.Runtime.CompilerServices.Nullable(new byte[] {
2,
0
})]
[field: System.Runtime.CompilerServices.Nullable(new byte[] {
2,
0
})]
public Func<HedgingDelayGeneratorArguments, ValueTask<TimeSpan>> DelayGenerator {
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
2,
0
})]
get;
[param: System.Runtime.CompilerServices.Nullable(new byte[] {
2,
0
})]
set;
}
[System.Runtime.CompilerServices.Nullable(new byte[] {
2,
0,
1
})]
[field: System.Runtime.CompilerServices.Nullable(new byte[] {
2,
0,
1
})]
public Func<OnHedgingArguments<TResult>, ValueTask> OnHedging {
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
2,
0,
1
})]
get;
[param: System.Runtime.CompilerServices.Nullable(new byte[] {
2,
0,
1
})]
set;
}
public HedgingStrategyOptions()
{
base.Name = "Hedging";
}
}
}