/[projects]/miscJava/CircuitBreaker/src/main/java/dk/thoerup/circuitbreaker/OpenState.java
ViewVC logotype

Contents of /miscJava/CircuitBreaker/src/main/java/dk/thoerup/circuitbreaker/OpenState.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 393 - (show annotations) (download)
Mon Oct 5 19:44:40 2009 UTC (14 years, 8 months ago) by torben
Original Path: CircuitBreaker/src/dk/thoerup/curcuitbreaker/OpenState.java
File size: 1062 byte(s)
First CircuitBreaker impl.
1 package dk.thoerup.curcuitbreaker;
2
3 import java.util.concurrent.atomic.AtomicLong;
4
5
6 public class OpenState implements CircuitBreakerState {
7
8 private AtomicLong tripTime = new AtomicLong(0);
9 private AtomicLong timeout = new AtomicLong(0);
10
11 public void setTimeout(long timeout) {
12 this.timeout.set( timeout );
13 }
14
15 public void preInvoke(CircuitBreaker circuitBreaker) throws Throwable
16 {
17 long now = System.currentTimeMillis();
18 long elapsed = now - tripTime.get();
19
20 if(elapsed > timeout.get())
21 {
22 circuitBreaker.attemptReset();
23 }
24 else
25 {
26 throw new CircuitBreakerException("Circuit Breaker is open; calls are failing fast");
27 }
28 }
29
30 public void postInvoke(CircuitBreaker circuitBreaker) throws Throwable
31 {
32 // NO OP
33 }
34
35 public void onError(CircuitBreaker circuitBreaker, Throwable t) throws Throwable
36 {
37 // NO OP
38 }
39
40 void trip()
41 {
42 long now = System.currentTimeMillis();
43 tripTime.set(now);
44 }
45
46 }

  ViewVC Help
Powered by ViewVC 1.1.20