/[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

revision 1285 by torben, Mon Apr 11 07:52:15 2011 UTC revision 1295 by torben, Sat Apr 16 21:00:08 2011 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.notification.Notifier;
7    
8  public class LoggingCircuitBreaker extends AccountingCircuitBreaker {  public class LoggingCircuitBreaker extends AccountingCircuitBreaker {
9    
# Line 11  public class LoggingCircuitBreaker exten Line 13  public class LoggingCircuitBreaker exten
13    
14          public class LogEntry {          public class LogEntry {
15                  public long time;                  public long time;
16                  public Notifier.Event event;                              public Notifier.Event event;
17                    public int count = 0;
18                    
19                  public LogEntry(Notifier.Event evnt) {                  public LogEntry(Notifier.Event evnt) {
20                          this.event = evnt;                          this.event = evnt;
21                          this.time = System.currentTimeMillis();                          this.time = System.currentTimeMillis();
22                  }                  }
23                    
24                    public void newRetrip() {//
25                            count++;
26                            time = System.currentTimeMillis();
27                    }
28                    
29                    @Override
30                    public String toString() {
31                            
32                            String str = new Date(time).toString() + (" : ") + event;
33                            
34                            if (event == Notifier.Event.BreakerRetripped) {
35                                    str += ( ", " + count + " re-trips" );
36                            }
37                            
38                            return str ;
39                    }
40          }          }
41                    
42                    
# Line 31  public class LoggingCircuitBreaker exten Line 51  public class LoggingCircuitBreaker exten
51                  super.tripBreaker();                  super.tripBreaker();
52                  addEntry(Notifier.Event.BreakerTripped);                  addEntry(Notifier.Event.BreakerTripped);
53          }          }
54            
55        
56          @Override          @Override
57          public void retripBreaker() {          public void retripBreaker() {
58                  super.retripBreaker();                  super.retripBreaker();
59                  addEntry(Notifier.Event.BreakerRetripped);                  addEntry(Notifier.Event.BreakerRetripped);
60          }          }
61    
62    
63          @Override          @Override
64          public void reset() {          public void reset() {
65                  super.reset();                  super.reset();
# Line 46  public class LoggingCircuitBreaker exten Line 68  public class LoggingCircuitBreaker exten
68    
69          private void addEntry(Notifier.Event event) {          private void addEntry(Notifier.Event event) {
70                  synchronized(this) {                  synchronized(this) {
71                          log.addFirst( new LogEntry(event) );  
72                            if (event != Notifier.Event.BreakerRetripped ) {
73                                    log.addFirst( new LogEntry(event) ); //trip and reset are added unconditionally
74                            } else {
75                                    
76                                    if (log.size() == 0 || log.getFirst().event != Notifier.Event.BreakerRetripped) {
77                                            log.addFirst( new LogEntry(event) );
78                                    } else {
79                                            log.getFirst().newRetrip();
80                                    }                              
81                            }
82    
83                          if(log.size() > maxSize) {                          if(log.size() > maxSize) {
84                                  log.removeLast();                                  log.removeLast();
85                          }                          }
86    
87                    }
88            }
89    
90            public void clearLog() {
91                    synchronized(this) {
92                            log.clear();
93                  }                  }
94          }          }
95    

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

  ViewVC Help
Powered by ViewVC 1.1.20