OutcomeChaosStrategy<T>
using Polly.Telemetry;
using System;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
namespace Polly.Simmy.Outcomes
{
[NullableContext(1)]
[Nullable(new byte[] {
0,
1
})]
internal class OutcomeChaosStrategy<[Nullable(2)] T> : MonkeyStrategy<T>
{
private readonly ResilienceStrategyTelemetry _telemetry;
[Nullable(new byte[] {
2,
0,
1
})]
[field: Nullable(new byte[] {
2,
0,
1
})]
public Func<OnOutcomeInjectedArguments<T>, ValueTask> OnOutcomeInjected {
[return: Nullable(new byte[] {
2,
0,
1
})]
get;
}
[Nullable(new byte[] {
1,
0,
0,
1
})]
[field: Nullable(new byte[] {
1,
0,
0,
1
})]
public Func<OutcomeGeneratorArguments, ValueTask<Outcome<T>?>> OutcomeGenerator {
[return: Nullable(new byte[] {
1,
0,
0,
1
})]
get;
}
public OutcomeChaosStrategy(OutcomeStrategyOptions<T> options, ResilienceStrategyTelemetry telemetry)
: base((MonkeyStrategyOptions)options)
{
_telemetry = telemetry;
OnOutcomeInjected = options.OnOutcomeInjected;
OutcomeGenerator = options.OutcomeGenerator;
}
[AsyncStateMachine(typeof(<ExecuteCore>d__8<>))]
[return: Nullable(new byte[] {
0,
0,
1
})]
protected internal override ValueTask<Outcome<T>> ExecuteCore<[Nullable(2)] TState>([Nullable(new byte[] {
1,
1,
1,
0,
0,
1
})] Func<ResilienceContext, TState, ValueTask<Outcome<T>>> callback, ResilienceContext context, TState state)
{
<ExecuteCore>d__8<TState> stateMachine = default(<ExecuteCore>d__8<TState>);
stateMachine.<>t__builder = AsyncValueTaskMethodBuilder<Outcome<T>>.Create();
stateMachine.<>4__this = this;
stateMachine.callback = callback;
stateMachine.context = context;
stateMachine.state = state;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
}
}