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

Diff of /CircuitBreaker/src/dk/thoerup/circuitbreaker/CircuitBreaker.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 393 by torben, Mon Oct 5 19:44:40 2009 UTC revision 397 by torben, Tue Oct 6 05:22:40 2009 UTC
# Line 2  package dk.thoerup.curcuitbreaker; Line 2  package dk.thoerup.curcuitbreaker;
2    
3  import java.util.logging.Logger;  import java.util.logging.Logger;
4    
5    /* Simple CircuitBreaker implementation - snipped from http://www.jroller.com/kenwdelong/entry/circuit_breaker_in_java
6     *
7     *  example of how it can be used
8    
9     private CircuitBreaker cb = new CircuitBreaker("test", 5, 10000);
10  /* example of how it can be used   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
11                  class TestInvocation implements CircuitInvocation {                  class TestInvocation implements CircuitInvocation {
12                          String url;                          String url;
13                          public TestInvocation(String url) {                          public TestInvocation(String url) {
# Line 78  public class CircuitBreaker{ Line 80  public class CircuitBreaker{
80            
81      public void tripBreaker() {      public void tripBreaker() {
82          synchronized(this) {          synchronized(this) {
                 currentState = open;  
83                  open.trip();                  open.trip();
84                    currentState = open;
85    
86                                    
87                  logger.warning("Circuitbreaker tripBreaker - " + name);                  logger.warning("Circuitbreaker tripBreaker - " + name);
88          }          }
# Line 102  public class CircuitBreaker{ Line 105  public class CircuitBreaker{
105          }          }
106      }      }
107            
108        
109      private CircuitBreakerState getState() {      private CircuitBreakerState getState() {
110          synchronized(this) {          synchronized(this) {
111                  return currentState;                  return currentState;
112          }          }
113      }      }
114        
115        public String getName() {
116            return name;
117        }
118        
119        public String getStateName() {
120            return getState().getName();
121        }
122        
123        public int getThreshold() {
124            return closed.getThreshold();
125        }
126        
127        public int getFailureCount() {
128            if (getState() == closed) {
129                    return closed.getFailureCount();
130            } else {
131                    return -1;
132            }
133        }
134        
135        public long getElapsed() {
136            if (getState() == open) {
137                    return open.getElapsed();
138            } else {
139                    return -1;
140            }
141        }
142    
143  }  }

Legend:
Removed from v.393  
changed lines
  Added in v.397

  ViewVC Help
Powered by ViewVC 1.1.20