<PackageReference Include="Polly.Core" Version="8.0.0-alpha.5" />

CircuitBreakerManualControl

Allows manual control of the circuit-breaker.
using System; using System.Collections.Generic; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; namespace Polly.CircuitBreaker { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] public sealed class CircuitBreakerManualControl : IDisposable { private readonly HashSet<Action> _onDispose = new HashSet<Action>(); private readonly HashSet<Func<ResilienceContext, Task>> _onIsolate = new HashSet<Func<ResilienceContext, Task>>(); private readonly HashSet<Func<ResilienceContext, Task>> _onReset = new HashSet<Func<ResilienceContext, Task>>(); private bool _isolated; internal void Initialize(Func<ResilienceContext, Task> onIsolate, Func<ResilienceContext, Task> onReset, Action onDispose) { _onDispose.Add(onDispose); _onIsolate.Add(onIsolate); _onReset.Add(onReset); if (_isolated) { ResilienceContext context = ResilienceContext.Get(default(CancellationToken)).Initialize<VoidResult>(true); IsolateAsync(context).GetAwaiter().GetResult(); } } [AsyncStateMachine(typeof(<IsolateAsync>d__5))] internal Task IsolateAsync(ResilienceContext context) { <IsolateAsync>d__5 stateMachine = default(<IsolateAsync>d__5); stateMachine.<>t__builder = AsyncTaskMethodBuilder.Create(); stateMachine.<>4__this = this; stateMachine.context = context; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<IsolateAsync>d__6))] public Task IsolateAsync(CancellationToken cancellationToken = default(CancellationToken)) { <IsolateAsync>d__6 stateMachine = default(<IsolateAsync>d__6); stateMachine.<>t__builder = AsyncTaskMethodBuilder.Create(); stateMachine.<>4__this = this; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<CloseAsync>d__7))] internal Task CloseAsync(ResilienceContext context) { <CloseAsync>d__7 stateMachine = default(<CloseAsync>d__7); stateMachine.<>t__builder = AsyncTaskMethodBuilder.Create(); stateMachine.<>4__this = this; stateMachine.context = context; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [AsyncStateMachine(typeof(<CloseAsync>d__8))] public Task CloseAsync(CancellationToken cancellationToken = default(CancellationToken)) { <CloseAsync>d__8 stateMachine = default(<CloseAsync>d__8); stateMachine.<>t__builder = AsyncTaskMethodBuilder.Create(); stateMachine.<>4__this = this; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public void Dispose() { foreach (Action item in _onDispose) { item(); } _onDispose.Clear(); _onIsolate.Clear(); _onReset.Clear(); } } }