public StatedCircuitBreaker(CircuitBreakerContext context)
        {
            this.context = context;
            this.context.State = State;

            this.context.ResetMetrics();
        }
 public ClosedCircuitBreaker(CircuitBreakerContext context)
     : base(context)
 {
     failedTimeCounter = new TimeCounter(context.Threshold.FailureTimeout, () => context.ResetFailure());
     failedTimeCounter.Start();
 }
 public OpenCircuitBreaker(CircuitBreakerContext context)
     : base(context)
 {
     retryTimeCounter = new TimeCounter(context.Threshold.RetryTimeout, () => context.TransferHalfOpenState());
     retryTimeCounter.Start();
 }
 public HalfOpenCircuitBreaker(CircuitBreakerContext context)
     : base(context)
 {
 }