CircuitBreakerPolicy<TResult>
A circuit-breaker policy that can be applied to delegates returning a value of type TResult.
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace Polly.CircuitBreaker
{
public class CircuitBreakerPolicy<TResult> : Policy<TResult>
{
internal readonly ICircuitController<TResult> _breakerController;
public CircuitState CircuitState => _breakerController.CircuitState;
public Exception LastException => _breakerController.LastException;
public TResult LastHandledResult => _breakerController.LastHandledResult;
internal CircuitBreakerPolicy(Func<Func<CancellationToken, TResult>, Context, CancellationToken, TResult> executionPolicy, IEnumerable<ExceptionPredicate> exceptionPredicates, IEnumerable<ResultPredicate<TResult>> resultPredicates, ICircuitController<TResult> breakerController)
: base(executionPolicy, exceptionPredicates, resultPredicates)
{
_breakerController = breakerController;
}
public void Isolate()
{
_breakerController.Isolate();
}
public void Reset()
{
_breakerController.Reset();
}
internal CircuitBreakerPolicy(Func<Func<CancellationToken, Task<TResult>>, Context, CancellationToken, bool, Task<TResult>> asyncExecutionPolicy, IEnumerable<ExceptionPredicate> exceptionPredicates, IEnumerable<ResultPredicate<TResult>> resultPredicates, ICircuitController<TResult> breakerController)
: base(asyncExecutionPolicy, exceptionPredicates, resultPredicates)
{
_breakerController = breakerController;
}
}
}