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

Diff of /miscJava/CircuitBreaker/src/main/java/dk/thoerup/circuitbreaker/LoggingCircuitBreaker.java

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

CircuitBreaker/src/dk/thoerup/circuitbreaker/LoggingCircuitBreaker.java revision 1285 by torben, Mon Apr 11 07:52:15 2011 UTC miscJava/CircuitBreaker/src/dk/thoerup/circuitbreaker/LoggingCircuitBreaker.java revision 2448 by torben, Fri Mar 20 08:52:49 2015 UTC
# Line 1  Line 1 
1  package dk.thoerup.circuitbreaker;  package dk.thoerup.circuitbreaker;
2    
3  import java.util.*;  import java.util.Date;
4  import dk.thoerup.circuitbreaker.notification.*;  import java.util.LinkedList;
5    
6    import dk.thoerup.circuitbreaker.config.BreakerConfig;
7    import dk.thoerup.circuitbreaker.notification.Notifier;
8    
9  public class LoggingCircuitBreaker extends AccountingCircuitBreaker {  public class LoggingCircuitBreaker extends AccountingCircuitBreaker {
10    
# Line 11  public class LoggingCircuitBreaker exten Line 14  public class LoggingCircuitBreaker exten
14    
15          public class LogEntry {          public class LogEntry {
16                  public long time;                  public long time;
17                  public Notifier.Event event;                              public Notifier.Event event;
18                    public int count = 1;
19                    
20                  public LogEntry(Notifier.Event evnt) {                  public LogEntry(Notifier.Event evnt) {
21                          this.event = evnt;                          this.event = evnt;
22                          this.time = System.currentTimeMillis();                          this.time = System.currentTimeMillis();
23                  }                  }
24                    
25                    public void newRetrip() {//
26                            count++;
27                            time = System.currentTimeMillis();
28                    }
29                    
30                    @Override
31                    public String toString() {
32                            
33                            String str = new Date(time).toString() + (" : ") + event;
34                            
35                            if (event == Notifier.Event.BreakerRetripped) {
36                                    str += ( ", " + count + " re-trips" );
37                            }
38                            
39                            return str ;
40                    }
41          }          }
42                    
43                    
44    
45          public LoggingCircuitBreaker(String name, int threshold, long timeoutMS) {          public LoggingCircuitBreaker(String name, BreakerConfig config) {
46                  super(name, threshold, timeoutMS);                  super(name, config);
47    
48          }          }
49    
# Line 31  public class LoggingCircuitBreaker exten Line 52  public class LoggingCircuitBreaker exten
52                  super.tripBreaker();                  super.tripBreaker();
53                  addEntry(Notifier.Event.BreakerTripped);                  addEntry(Notifier.Event.BreakerTripped);
54          }          }
55            
56        
57          @Override          @Override
58          public void retripBreaker() {          public void retripBreaker() {
59                  super.retripBreaker();                  super.retripBreaker();
60                  addEntry(Notifier.Event.BreakerRetripped);                  addEntry(Notifier.Event.BreakerRetripped);
61          }          }
62    
63    
64          @Override          @Override
65          public void reset() {          public void reset() {
66                  super.reset();                  super.reset();
# Line 46  public class LoggingCircuitBreaker exten Line 69  public class LoggingCircuitBreaker exten
69    
70          private void addEntry(Notifier.Event event) {          private void addEntry(Notifier.Event event) {
71                  synchronized(this) {                  synchronized(this) {
72                          log.addFirst( new LogEntry(event) );  
73                            if (event != Notifier.Event.BreakerRetripped ) {
74                                    log.addFirst( new LogEntry(event) ); //trip and reset are added unconditionally
75                            } else {
76                                    
77                                    if (log.size() == 0 || log.getFirst().event != Notifier.Event.BreakerRetripped) {
78                                            log.addFirst( new LogEntry(event) );
79                                    } else {
80                                            log.getFirst().newRetrip();
81                                    }                              
82                            }
83    
84                          if(log.size() > maxSize) {                          if(log.size() > maxSize) {
85                                  log.removeLast();                                  log.removeLast();
86                          }                          }
87    
88                    }
89            }
90    
91            public void clearLog() {
92                    synchronized(this) {
93                            log.clear();
94                  }                  }
95          }          }
96    

Legend:
Removed from v.1285  
changed lines
  Added in v.2448

  ViewVC Help
Powered by ViewVC 1.1.20