<PackageReference Include="Polly.Core" Version="8.5.1" />

BridgeComponent<T>

using System; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Threading.Tasks; namespace Polly.Utils.Pipeline { [NullableContext(1)] [Nullable(0)] [DebuggerDisplay("{Strategy}")] internal sealed class BridgeComponent<[Nullable(2)] T> : BridgeComponentBase { public ResilienceStrategy<T> Strategy { get; } public BridgeComponent(ResilienceStrategy<T> strategy) : base(strategy) { Strategy = strategy; } [return: Nullable(new byte[] { 0, 0, 1 })] internal override ValueTask<Outcome<TResult>> ExecuteCore<[Nullable(2)] TResult, [Nullable(2)] TState>([Nullable(new byte[] { 1, 1, 1, 0, 0, 1 })] Func<ResilienceContext, TState, ValueTask<Outcome<TResult>>> callback, ResilienceContext context, TState state) { Func<ResilienceContext, TState, ValueTask<Outcome<T>>> func = callback as Func<ResilienceContext, TState, ValueTask<Outcome<T>>>; if (func != null) return ConvertValueTask<TResult>(this.Strategy.ExecuteCore(func, context, state), context); return ConvertValueTask<TResult>(this.Strategy.ExecuteCore(delegate(ResilienceContext context, (Func<ResilienceContext, TState, ValueTask<Outcome<TResult>>> callback, TState state) state) { <>c__4<TResult, TState>.<<ExecuteCore>b__4_0>d stateMachine = default(<>c__4<TResult, TState>.<<ExecuteCore>b__4_0>d); stateMachine.<>t__builder = AsyncValueTaskMethodBuilder<Outcome<T>>.Create(); stateMachine.context = context; stateMachine.state = state; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; }, context, (callback, state)), context); } [return: Nullable(new byte[] { 0, 0, 1 })] private static ValueTask<Outcome<TTo>> ConvertValueTask<[Nullable(2)] TTo>([Nullable(new byte[] { 0, 0, 1 })] ValueTask<Outcome<T>> valueTask, ResilienceContext resilienceContext) { if (valueTask.IsCompletedSuccessfully) return new ValueTask<Outcome<TTo>>(ConvertOutcome<T, TTo>(valueTask.Result)); return <ConvertValueTask>g__ConvertValueTaskAsync|5_0<TTo>(valueTask, resilienceContext); } [NullableContext(2)] [return: Nullable(new byte[] { 0, 1 })] private static Outcome<TTo> ConvertOutcome<TFrom, TTo>([Nullable(new byte[] { 0, 1 })] Outcome<TFrom> outcome) { if (outcome.ExceptionDispatchInfo != null) return new Outcome<TTo>(outcome.ExceptionDispatchInfo); if (outcome.Result == null) return new Outcome<TTo>(default(TTo)); if (typeof(TTo) == typeof(TFrom)) { TFrom result = outcome.Result; return new Outcome<TTo>(Unsafe.As<TFrom, TTo>(ref result)); } return new Outcome<TTo>((TTo)(object)outcome.Result); } } }