Example #1
0
 public CircuitBreaker(CircuitBreakerSetting setting)
 {
     CheckSetting(setting);
     _setting       = setting;
     _closeState    = new CloseState(this, new Tuple <TimeSpan, int>(_setting.AllowFailInterval, _setting.AllowFailTimes));
     _openState     = new OpenState(this, _setting.HalfOpenDuration);
     _halfOpenState = new HalfOpenState(this, _setting.HalfOpenRequestLimit);
     _lockObject    = new object();
     MoveToCloseState();
 }
Example #2
0
 public void Dispose()
 {
     if (_openState is IDisposable openState)
     {
         openState.Dispose();
         _openState = null;
     }
     if (_closeState is IDisposable closeState)
     {
         closeState.Dispose();
         _closeState = null;
     }
     if (_halfOpenState is IDisposable halfOpenState)
     {
         halfOpenState.Dispose();
         _halfOpenState = null;
     }
 }
Example #3
0
 public void MoveToHalfOpenState()
 {
     _currentState?.Clear();
     _currentState = _halfOpenState;
     _currentState.Initialize();
 }
Example #4
0
 public void MoveToCloseState()
 {
     _currentState?.Clear();
     _currentState = _closeState;
     _currentState.Initialize();
 }