--- projects/cms/source/host/java/SystemMonitor.java 2000/11/27 20:36:30 1.2 +++ projects/cms/source/host/java/SystemMonitor.java 2000/11/30 17:33:36 1.4 @@ -2,6 +2,8 @@ //---IMPORTS--- +import java.util.Random; + /** * Gathers system information then outputs it as XML * Collects data based on properties gained from the configurator @@ -9,7 +11,7 @@ * the timeout has passed. * * @author $Author: ab11 $ - * @version $Id: SystemMonitor.java,v 1.2 2000/11/27 20:36:30 ab11 Exp $ + * @version $Id: SystemMonitor.java,v 1.4 2000/11/30 17:33:36 ab11 Exp $ */ class SystemMonitor { @@ -34,7 +36,15 @@ class SystemMonitor { // why oh why wont ultra edit let me put Long in the next line? oh its trying to // correct keywords =| - checkInterval = Long.parseLong(config.getProperty("UDPINTEVAL")); + try { + udpcheckInterval = Long.parseLong(config.getProperty("UDPUpdateTime")) * 1000; + } + catch ( NumberFormatException e ){ + System.out.println("The value for UDPUpdateTime is invalid, using a default"); + // 5 mins + udpcheckInterval = 5000 * 60; + } + // make the check interval into seconds } @@ -49,6 +59,8 @@ class SystemMonitor { // called to retrieve the stored averages and output them as a XML string XMLFormatter xml = new XMLFormatter("packet"); + Random rand = new Random(); + // just send some dummy info for now. xml.addNest("packet_info"); String currentTime = Long.toString(System.currentTimeMillis()); @@ -56,20 +68,32 @@ class SystemMonitor { xml.addElement("sequence", Integer.toString(sequence)); xml.closeNest(); xml.addNest("core"); - xml.addElement("cpu","100"); - xml.addElement("memory","200"); + xml.addElement("cpu",""+rand.nextInt(100)); + xml.addElement("memory",""+rand.nextInt(100)); xml.closeNest(); - xml.addNest("additional"); - xml.addElement("users","20"); - xml.closeNest(); - + if ( rand.nextBoolean() ){ + xml.addNest("additional"); + xml.addElement("users",""+rand.nextInt(30)); + xml.closeNest(); + } // MUST FIX THIS..!!!! - while ( System.currentTimeMillis() < ( lastCheck + checkInterval ) ){ - // errm do nothing.. block or something. + try { + long updateIn = ( lastCheck + udpcheckInterval )-System.currentTimeMillis(); + if ( updateIn > 0 ){ + Thread.sleep(updateIn); + } + else + { + Thread.sleep(defaultUpdateTime); + } } + catch( InterruptedException e ){ + System.out.println("Sleep interrupted"); + } // increment sequence. sequence++; + lastCheck = System.currentTimeMillis(); // finally return a string return xml.returnXML(); @@ -83,7 +107,8 @@ class SystemMonitor { private long lastCheck; private int sequence; - private long checkInterval; + private long udpcheckInterval; + private final long defaultUpdateTime = 60000; //---STATIC ATTRIBUTES---