HedgingResilienceStrategyBuilderExtensions
Provides extension methods for configuring hedging resilience strategies for ResilienceStrategyBuilder.
using Polly.Hedging;
using Polly.Hedging.Utils;
using Polly.Utils;
using System.Runtime.CompilerServices;
namespace Polly
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
public static class HedgingResilienceStrategyBuilderExtensions
{
public static ResilienceStrategyBuilder<TResult> AddHedging<[System.Runtime.CompilerServices.Nullable(2)] TResult>(this ResilienceStrategyBuilder<TResult> builder, HedgingStrategyOptions<TResult> options)
{
Guard.NotNull(builder, "builder");
Guard.NotNull(options, "options");
builder.AddHedgingCore(options);
return builder;
}
internal static ResilienceStrategyBuilder AddHedging(this ResilienceStrategyBuilder builder, HedgingStrategyOptions options)
{
Guard.NotNull(builder, "builder");
Guard.NotNull(options, "options");
builder.AddHedgingCore(options);
return builder;
}
internal static void AddHedgingCore<[System.Runtime.CompilerServices.Nullable(2)] TResult>(this ResilienceStrategyBuilderBase builder, HedgingStrategyOptions<TResult> options)
{
builder.AddStrategy(delegate(ResilienceStrategyBuilderContext context) {
HedgingHandler<TResult> hedgingHandler = new HedgingHandler<TResult>(options.ShouldHandle, options.HedgingActionGenerator, context.IsGenericBuilder);
return new HedgingResilienceStrategy<TResult>(options.HedgingDelay, options.MaxHedgedAttempts, hedgingHandler, options.OnHedging, options.HedgingDelayGenerator, context.TimeProvider, context.Telemetry, context.IsGenericBuilder);
}, options);
}
}
}