ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/client/MonitorSkeleton.java
Revision: 1.2
Committed: Wed Mar 7 23:17:02 2001 UTC (23 years, 2 months ago) by tdb
Branch: MAIN
Changes since 1.1: +3 -3 lines
Log Message:
Opps, it's been in the wrong package all this time :)

File Contents

# User Rev Content
1 tdb 1.1 //---PACKAGE DECLARATION---
2 tdb 1.2 package uk.ac.ukc.iscream.client;
3 tdb 1.1
4     //---IMPORTS---
5     import java.util.HashMap;
6     import uk.ac.ukc.iscream.client.*;
7     import uk.ac.ukc.iscream.core.*;
8     import uk.ac.ukc.iscream.util.*;
9     import uk.ac.ukc.iscream.componentmanager.*;
10    
11     /**
12     * Skeleton class for Monitors
13     *
14 tdb 1.2 * @author $Author: tdb1 $
15     * @version $Id: MonitorSkeleton.java,v 1.1 2001/03/06 22:33:54 tdb1 Exp $
16 tdb 1.1 */
17     public abstract class MonitorSkeleton implements PluginMonitor {
18    
19     //---FINAL ATTRIBUTES---
20    
21     //---STATIC METHODS---
22    
23     //---CONSTRUCTORS---
24    
25     //---PUBLIC METHODS---
26    
27     public abstract void analysePacket(XMLPacket packet);
28    
29     public void processAlert(int newThreshold, int attributeNum, String attributeName, Register reg, String source, String currentValue) {
30     // decide what threshold level we're on, if we've changed, record that
31     if (newThreshold != reg.getLastThresholdLevel(attributeNum)) {
32     reg.setLastThresholdLevel(attributeNum, newThreshold);
33     }
34     // as long as this isn't a normal level
35     if(reg.getLastThresholdLevel(attributeNum) != Alert.thresholdNORMAL) {
36     // if the time since the last alert is more than the time for
37     // its timeout, fire an alert, escalate the alert
38     long timeout = reg.getLastAlertTimeout(attributeNum);
39     if ((timeout > 0) && (reg.getTimeLastSent(attributeNum) > 0)) {
40     if((System.currentTimeMillis() - reg.getTimeLastSent(attributeNum)) > timeout) {
41     int lastAlert = reg.getLastAlertLevel(attributeNum);
42     reg.escalateAlert(attributeNum);
43     reg.setTimeLastSent(attributeNum, System.currentTimeMillis());
44     reg.setLastAlertTimeout(attributeNum, reg.getAlertTimeout(reg.getLastAlertLevel(attributeNum), attributeNum));
45     fireAlert(reg, lastAlert, attributeNum, source, currentValue, attributeName);
46     }
47     // if we don't have a timeout configured...we got STRAIGHT to the next level
48     } else {
49     int lastAlert = reg.getLastAlertLevel(attributeNum);
50     reg.escalateAlert(attributeNum);
51     reg.setTimeLastSent(attributeNum, System.currentTimeMillis());
52     reg.setLastAlertTimeout(attributeNum, reg.getAlertTimeout(reg.getLastAlertLevel(attributeNum), attributeNum));
53     fireAlert(reg, lastAlert, attributeNum, source, currentValue, attributeName);
54     }
55    
56     // we must be on ok, check the timeout value for this
57     } else {
58     // if we were on an OK alert before, then we don't do anything
59     // but if we weren't we only set OK, once the timout of the last
60     // alert has occourd
61     if (reg.getLastAlertLevel(attributeNum) != Alert.alertOK) {
62     long timeout = reg.getLastAlertTimeout(attributeNum);
63     if ((timeout > 0) && (reg.getTimeLastSent(attributeNum) > 0)) {
64     if ((System.currentTimeMillis() - reg.getTimeLastSent(attributeNum)) > timeout) {
65     int lastAlert = reg.getLastAlertLevel(attributeNum);
66     reg.setLastAlertLevel(attributeNum, Alert.alertOK);
67     reg.setTimeLastSent(attributeNum, System.currentTimeMillis());
68     reg.setLastAlertTimeout(attributeNum, timeout);
69     fireAlert(reg, lastAlert, attributeNum, source, currentValue, attributeName);
70     }
71     }
72     }
73     }
74     }
75    
76     /**
77     * return the String representation of what the monitor does
78     */
79     public abstract String getDescription();
80    
81    
82     //---PRIVATE METHODS---
83    
84     protected void fireAlert(Register reg, int lastAlert, int attributeNum, String source, String currentValue, String attributeName) {
85     int alertLevel = reg.getLastAlertLevel(attributeNum);
86     int thresholdLevel = reg.getLastThresholdLevel(attributeNum);
87     String thresholdValue = String.valueOf(reg.getThreshold(thresholdLevel));
88     String timeout = String.valueOf(reg.getAlertTimeout(reg.getLastAlertLevel(attributeNum), attributeNum) / 1000);
89     if (thresholdLevel == Alert.thresholdNORMAL) {
90     thresholdValue = "-";
91     }
92     if (alertLevel == Alert.alertOK) {
93     timeout = "0";
94     }
95     Alert alert = new Alert(alertLevel, lastAlert, thresholdLevel, source, thresholdValue, currentValue, attributeName, timeout, reg.getInitialAlertTime(attributeNum));
96     _alerterQueue.add(alert);
97     _logger.write(toString(), Logger.DEBUG, "Fired alert for source:" + source + " at alert level:" + Alert.alertLevels[alertLevel] + " on:" + attributeName + " for threshold level:" + Alert.thresholdLevels[thresholdLevel] + " at:" + currentValue + " exceeding threshold of:" +thresholdValue + " next alert sent in:" + timeout + "secs");
98     }
99    
100     //---ACCESSOR/MUTATOR METHODS---
101    
102     //---ATTRIBUTES---
103    
104     protected Logger _logger = ReferenceManager.getInstance().getLogger();
105    
106     protected Queue _alerterQueue = ClientMain._alerterQueue;
107    
108     //---STATIC ATTRIBUTES---
109    
110     }