CircuitBreakerPolicy<TResult>
public class CircuitBreakerPolicy<TResult> : Policy<TResult>, ICircuitBreakerPolicy<TResult>, ICircuitBreakerPolicy, IsPolicy
A circuit-breaker policy that can be applied to delegates returning a value of type TResult.
using System;
using System.Diagnostics;
using System.Threading;
namespace Polly.CircuitBreaker
{
public class CircuitBreakerPolicy<TResult> : Policy<TResult>, ICircuitBreakerPolicy<TResult>, ICircuitBreakerPolicy, IsPolicy
{
internal readonly ICircuitController<TResult> _breakerController;
public CircuitState CircuitState => _breakerController.CircuitState;
public Exception LastException => _breakerController.LastException;
public TResult LastHandledResult => _breakerController.LastHandledResult;
internal CircuitBreakerPolicy(PolicyBuilder<TResult> policyBuilder, ICircuitController<TResult> breakerController)
: base(policyBuilder)
{
_breakerController = breakerController;
}
public void Isolate()
{
_breakerController.Isolate();
}
public void Reset()
{
_breakerController.Reset();
}
[DebuggerStepThrough]
protected override TResult Implementation(Func<Context, CancellationToken, TResult> action, Context context, CancellationToken cancellationToken)
{
return CircuitBreakerEngine.Implementation<TResult>(action, context, cancellationToken, base.ExceptionPredicates, base.ResultPredicates, _breakerController);
}
}
}