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(); }
public void MoveToOpenState() { _currentState?.Clear(); _currentState = _openState; _currentState.Initialize(); }
public void MoveToCloseState() { _currentState?.Clear(); _currentState = _closeState; _currentState.Initialize(); }