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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 393 - (hide 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 torben 393 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