--- projects/cms/source/host/java/JavaHost.java 2000/12/07 23:20:15 1.4 +++ projects/cms/source/host/java/JavaHost.java 2000/12/08 15:44:56 1.5 @@ -7,8 +7,8 @@ * Designed to be used as a working design to build the C++ hosts on. * Hopefully fully functional and thus can be used as part of a test rig. * - * @author $Author: tdb $ - * @version $Id: JavaHost.java,v 1.4 2000/12/07 23:20:15 tdb Exp $ + * @author $Author: ab11 $ + * @version $Id: JavaHost.java,v 1.5 2000/12/08 15:44:56 ab11 Exp $ */ class JavaHost { @@ -35,17 +35,73 @@ class JavaHost { System.out.println("Creating System Monitor"); SystemMonitor sysMon = new SystemMonitor(config); + try { + udpcheckInterval = Long.parseLong(config.getProperty("UDPUpdateTime")) * 1000; + System.out.println("Configured UDPUpdateTime"); + } + catch ( NumberFormatException e ){ + System.out.println("The value for UDPUpdateTime is invalid, using a default"); + // 1 mins + udpcheckInterval = 1000 * 60; // 1 minute + } + + try { + tcpcheckInterval = Long.parseLong(config.getProperty("TCPUpdateTime")) * 1000; + System.out.println("Configured TCPUpdateTime"); + } + catch ( NumberFormatException e ){ + System.out.println("The value for UDPUpdateTime is invalid, using a default"); + // 10 mins + tcpcheckInterval = 10000 * 60; // 5 minutes + } + + // the current time.. + long currentTime = System.currentTimeMillis(); + long nextUDP = currentTime + udpcheckInterval; + long nextTCP = currentTime + tcpcheckInterval; + while ( true ){ + currentTime = System.currentTimeMillis(); // keep going for ever and ever ;) - // send a udp packet to the filter declared in config - // send it the xml packet created by getInfo() - System.out.println("Sending UDP Packet"); - LowLevelNet.sendUDPPacket(config, sysMon.getInfo()); - config.sendHeartBeat(); - if ( config.reloadConfig() ){ - System.out.println("Resarting System"); - break; + + if ( nextTCP < nextUDP ){ + try { + long sleeptime = nextTCP - currentTime; + if ( sleeptime > 0 ){ + Thread.sleep(sleeptime); + } + nextTCP += tcpcheckInterval; + // send a heartbeat + System.out.println("Sending Heartbeat"); + config.sendHeartBeat(); + if ( config.reloadConfig() ){ + System.out.println("Resarting System"); + break; + } + } + catch ( InterruptedException e ){ + // do nothing + } } + else { + try { + long sleeptime = nextUDP - currentTime; + if ( sleeptime > 0 ){ + Thread.sleep(sleeptime); + } + nextUDP += udpcheckInterval; + // send a heartbeat + System.out.println("Sending UDP Packet"); + LowLevelNet.sendUDPPacket(config, sysMon.getInfo()); + + } + catch ( InterruptedException e ){ + // do nothing + } + } + + + } // while @@ -59,6 +115,11 @@ class JavaHost { //---ACCESSOR/MUTATOR METHODS--- //---ATTRIBUTES--- + + private long udpcheckInterval; + private long tcpcheckInterval; + private final long defaultUpdateTime = 60000; + //---STATIC ATTRIBUTES---