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.5
Committed: Wed Mar 14 23:25:29 2001 UTC (23 years, 2 months ago) by tdb
Branch: MAIN
Changes since 1.4: +7 -7 lines
Log Message:
The whole server package structure has been changed.
Old Package: uk.ac.ukc.iscream.*
New Package: uk.org.iscream.*

File Contents

# Content
1 //---PACKAGE DECLARATION---
2 package uk.org.iscream.client;
3
4 //---IMPORTS---
5 import java.util.HashMap;
6 import uk.org.iscream.client.*;
7 import uk.org.iscream.core.*;
8 import uk.org.iscream.util.*;
9 import uk.org.iscream.componentmanager.*;
10
11 /**
12 * Skeleton class for Monitors
13 *
14 * @author $Author: ajm4 $
15 * @version $Id: MonitorSkeleton.java,v 1.4 2001/03/09 03:57:01 ajm4 Exp $
16 */
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, 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()) {
32 reg.setLastThresholdLevel(newThreshold);
33 }
34 // as long as this isn't a normal level
35 if(reg.getLastThresholdLevel() != 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();
39 if ((timeout > 0) && (reg.getTimeLastSent() > 0)) {
40 if((System.currentTimeMillis() - reg.getTimeLastSent()) > timeout) {
41 int lastAlert = reg.getLastAlertLevel();
42 reg.escalateAlert();
43 reg.setTimeLastSent( System.currentTimeMillis());
44 reg.setLastAlertTimeout(reg.getAlertTimeout(reg.getLastAlertLevel()));
45 fireAlert(reg, lastAlert, 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();
50 reg.escalateAlert();
51 reg.setTimeLastSent( System.currentTimeMillis());
52 reg.setLastAlertTimeout(reg.getAlertTimeout(reg.getLastAlertLevel()));
53 fireAlert(reg, lastAlert, 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() != Alert.alertOK) {
62 long timeout = reg.getLastAlertTimeout();
63 if ((timeout > 0) && (reg.getTimeLastSent() > 0)) {
64 if ((System.currentTimeMillis() - reg.getTimeLastSent()) > timeout) {
65 int lastAlert = reg.getLastAlertLevel();
66 reg.setLastAlertLevel(Alert.alertOK);
67 reg.setTimeLastSent(System.currentTimeMillis());
68 reg.setLastAlertTimeout(timeout);
69 fireAlert(reg, lastAlert, 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, String source, String currentValue, String attributeName) {
85 int alertLevel = reg.getLastAlertLevel();
86 int thresholdLevel = reg.getLastThresholdLevel();
87 String thresholdValue = String.valueOf(reg.getThreshold(thresholdLevel));
88 String timeout = String.valueOf(reg.getAlertTimeout(reg.getLastAlertLevel()) / 1000);
89 // ensures we display a nice thing if its -1.0
90 if (thresholdLevel == -1.0) {
91 thresholdValue = "-";
92 }
93 if (alertLevel == Alert.alertOK) {
94 timeout = "0";
95 }
96 Alert alert = new Alert(alertLevel, lastAlert, thresholdLevel, source, thresholdValue, currentValue, attributeName, timeout, reg.getInitialAlertTime());
97 _alerterQueue.add(alert);
98 _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");
99 }
100
101 //---ACCESSOR/MUTATOR METHODS---
102
103 //---ATTRIBUTES---
104
105 protected Logger _logger = ReferenceManager.getInstance().getLogger();
106
107 protected Queue _alerterQueue = ClientMain._alerterQueue;
108
109 //---STATIC ATTRIBUTES---
110
111 }