CircuitBreakerPolicy
A circuit-breaker policy that can be applied to delegates.
using Polly.Utilities;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace Polly.CircuitBreaker
{
public class CircuitBreakerPolicy : Policy
{
internal readonly ICircuitController<EmptyStruct> _breakerController;
public CircuitState CircuitState => _breakerController.CircuitState;
public Exception LastException => _breakerController.LastException;
internal CircuitBreakerPolicy(Action<Action<Context, CancellationToken>, Context, CancellationToken> exceptionPolicy, IEnumerable<ExceptionPredicate> exceptionPredicates, ICircuitController<EmptyStruct> breakerController)
: base(exceptionPolicy, exceptionPredicates)
{
_breakerController = breakerController;
}
public void Isolate()
{
_breakerController.Isolate();
}
public void Reset()
{
_breakerController.Reset();
}
internal CircuitBreakerPolicy(Func<Func<Context, CancellationToken, Task>, Context, CancellationToken, bool, Task> asyncExceptionPolicy, IEnumerable<ExceptionPredicate> exceptionPredicates, ICircuitController<EmptyStruct> breakerController)
: base(asyncExceptionPolicy, exceptionPredicates)
{
_breakerController = breakerController;
}
}
}