ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/host/java/SystemMonitor.java
Revision: 1.4
Committed: Thu Nov 30 17:33:36 2000 UTC (23 years, 9 months ago) by ab11
Branch: MAIN
Changes since 1.3: +19 -4 lines
Log Message:
Added some extra error checking so that Hosts don't bomb with Thread.sleep errors (when it was negative).
If the wait time is negative then the default override time is used (1 min)

File Contents

# User Rev Content
1 ab11 1.2 //---PACKAGE DECLARATION---
2    
3     //---IMPORTS---
4    
5 ab11 1.3 import java.util.Random;
6    
7 ab11 1.2 /**
8     * Gathers system information then outputs it as XML
9     * Collects data based on properties gained from the configurator
10     * then packages these up using XMLFormatter and outputs them if
11     * the timeout has passed.
12     *
13     * @author $Author: ab11 $
14 ab11 1.4 * @version $Id: SystemMonitor.java,v 1.3 2000/11/30 04:11:00 ab11 Exp $
15 ab11 1.2 */
16 ab11 1.1 class SystemMonitor {
17    
18 ab11 1.2 //---FINAL ATTRIBUTES---
19    
20     //---STATIC METHODS---
21    
22     //---CONSTRUCTORS---
23    
24     /**
25     * Public constructor for the class. Takes in a Config object to gain its
26     * properties from.
27     *
28     */
29     public SystemMonitor( Config config ){
30     // create a new instace, get the info we need out of config
31     // like things to monitor
32    
33     lastCheck = System.currentTimeMillis();
34     sequence = 0;
35    
36    
37     // why oh why wont ultra edit let me put Long in the next line? oh its trying to
38     // correct keywords =|
39 ab11 1.4 try {
40     udpcheckInterval = Long.parseLong(config.getProperty("UDPUpdateTime")) * 1000;
41     }
42     catch ( NumberFormatException e ){
43     System.out.println("The value for UDPUpdateTime is invalid, using a default");
44     // 5 mins
45     udpcheckInterval = 5000 * 60;
46     }
47 ab11 1.3 // make the check interval into seconds
48 ab11 1.2
49     }
50    
51     //---PUBLIC METHODS---
52    
53     /**
54     * Gathers system information and will black until the timeout has passed.
55     *
56     * @return the system information in an XML packet
57     */
58     public String getInfo(){
59     // called to retrieve the stored averages and output them as a XML string
60     XMLFormatter xml = new XMLFormatter("packet");
61    
62 ab11 1.3 Random rand = new Random();
63    
64 ab11 1.2 // just send some dummy info for now.
65     xml.addNest("packet_info");
66     String currentTime = Long.toString(System.currentTimeMillis());
67     xml.addElement("date_time", currentTime );
68     xml.addElement("sequence", Integer.toString(sequence));
69     xml.closeNest();
70     xml.addNest("core");
71 ab11 1.3 xml.addElement("cpu",""+rand.nextInt(100));
72     xml.addElement("memory",""+rand.nextInt(100));
73 ab11 1.2 xml.closeNest();
74 ab11 1.3 if ( rand.nextBoolean() ){
75     xml.addNest("additional");
76     xml.addElement("users",""+rand.nextInt(30));
77     xml.closeNest();
78     }
79 ab11 1.2 // MUST FIX THIS..!!!!
80 ab11 1.3 try {
81 ab11 1.4 long updateIn = ( lastCheck + udpcheckInterval )-System.currentTimeMillis();
82     if ( updateIn > 0 ){
83     Thread.sleep(updateIn);
84     }
85     else
86     {
87     Thread.sleep(defaultUpdateTime);
88     }
89 ab11 1.3 }
90     catch( InterruptedException e ){
91     System.out.println("Sleep interrupted");
92 ab11 1.2 }
93    
94     // increment sequence.
95     sequence++;
96 ab11 1.3 lastCheck = System.currentTimeMillis();
97 ab11 1.2
98     // finally return a string
99     return xml.returnXML();
100     } // getinfo()
101    
102     //---PRIVATE METHODS---
103    
104     //---ACCESSOR/MUTATOR METHODS---
105    
106     //---ATTRIBUTES---
107 ab11 1.1
108     private long lastCheck;
109     private int sequence;
110 ab11 1.4 private long udpcheckInterval;
111     private final long defaultUpdateTime = 60000;
112 ab11 1.2
113     //---STATIC ATTRIBUTES---
114 ab11 1.1
115     } // class