CircuitBreakerStateProvider
Allows retrieval of the circuit breaker state.
using System;
using System.Runtime.CompilerServices;
namespace Polly.CircuitBreaker
{
public sealed class CircuitBreakerStateProvider
{
[System.Runtime.CompilerServices.Nullable(2)]
private Func<CircuitState> _circuitStateProvider;
[System.Runtime.CompilerServices.Nullable(new byte[] {
2,
0,
1
})]
private Func<Outcome<object>?> _lastHandledOutcomeProvider;
internal bool IsInitialized => _circuitStateProvider != null;
public CircuitState CircuitState => _circuitStateProvider?.Invoke() ?? CircuitState.Closed;
[System.Runtime.CompilerServices.Nullable(new byte[] {
0,
1
})]
public Outcome<object>? LastHandledOutcome {
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
0,
1
})]
get {
return _lastHandledOutcomeProvider?.Invoke();
}
}
[System.Runtime.CompilerServices.NullableContext(1)]
internal void Initialize(Func<CircuitState> circuitStateProvider, [System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1
})] Func<Outcome<object>?> lastHandledOutcomeProvider)
{
if (_circuitStateProvider != null)
throw new InvalidOperationException("This instance of 'CircuitBreakerStateProvider' is already initialized and cannot be used in a different circuit-breaker strategy.");
_circuitStateProvider = circuitStateProvider;
_lastHandledOutcomeProvider = lastHandledOutcomeProvider;
}
}
}