
com.fitbur.failsafe.internal.OpenState Maven / Gradle / Ivy
The newest version!
package com.fitbur.failsafe.internal;
import com.fitbur.failsafe.CircuitBreaker;
import com.fitbur.failsafe.CircuitBreaker.State;
import com.fitbur.failsafe.util.Duration;
public class OpenState implements CircuitState {
private final CircuitBreaker circuit;
private final Duration delay;
private final long startTime = System.nanoTime();
public OpenState(CircuitBreaker circuit) {
this.circuit = circuit;
this.delay = circuit.getDelay();
}
@Override
public boolean allowsExecution(CircuitBreakerStats stats) {
if (System.nanoTime() - startTime >= delay.toNanos()) {
circuit.halfOpen();
return true;
}
return false;
}
@Override
public State getState() {
return State.OPEN;
}
@Override
public void recordFailure() {
throw new IllegalStateException("Cannot record result for open circuit");
}
@Override
public void recordSuccess() {
throw new IllegalStateException("Cannot record result for open circuit");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy