/[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 450 - (hide annotations) (download)
Tue Oct 20 10:26:50 2009 UTC (14 years, 7 months ago) by torben
Original Path: CircuitBreaker/src/dk/thoerup/curcuitbreaker/OpenState.java
File size: 1334 byte(s)
Narrow thrown from Throwable to Exception,

Added a notifier that prints to system.out
1 torben 393 package dk.thoerup.curcuitbreaker;
2    
3     import java.util.concurrent.atomic.AtomicLong;
4    
5    
6 torben 424 public final class OpenState implements CircuitBreakerState {
7 torben 393
8 torben 424 final private AtomicLong tripTime = new AtomicLong(0);
9     final private AtomicLong timeout = new AtomicLong(0);
10 torben 393
11     public void setTimeout(long timeout) {
12     this.timeout.set( timeout );
13     }
14    
15 torben 450 public void preInvoke(CircuitBreaker circuitBreaker) throws Exception
16 torben 393 {
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 torben 450 public void postInvoke(CircuitBreaker circuitBreaker) throws Exception
31 torben 393 {
32     // NO OP
33     }
34    
35 torben 450 public void onError(CircuitBreaker circuitBreaker, Exception t) throws Exception
36 torben 393 {
37     // NO OP
38     }
39    
40     void trip()
41     {
42     long now = System.currentTimeMillis();
43     tripTime.set(now);
44     }
45    
46 torben 397 public String getName() {
47     return "Open";
48     }
49    
50     public long getTimeout() {
51     return timeout.get();
52     }
53    
54     public long getElapsed() {
55     long now = System.currentTimeMillis();
56     long elapsed = now - tripTime.get();
57     return elapsed;
58     }
59    
60 torben 393 }

  ViewVC Help
Powered by ViewVC 1.1.20