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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 467 - (show annotations) (download)
Thu Oct 22 06:01:35 2009 UTC (14 years, 7 months ago) by torben
File size: 1334 byte(s)
Rename package
1 package dk.thoerup.circuitbreaker;
2
3 import java.util.concurrent.atomic.AtomicLong;
4
5
6 public final class OpenState implements CircuitBreakerState {
7
8 final private AtomicLong tripTime = new AtomicLong(0);
9 final 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 Exception
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 Exception
31 {
32 // NO OP
33 }
34
35 public void onError(CircuitBreaker circuitBreaker, Exception t) throws Exception
36 {
37 // NO OP
38 }
39
40 void trip()
41 {
42 long now = System.currentTimeMillis();
43 tripTime.set(now);
44 }
45
46 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 }

Properties

Name Value
svn:mergeinfo

  ViewVC Help
Powered by ViewVC 1.1.20