--- projects/cms/source/host/java/Config.java 2000/11/30 04:06:52 1.3 +++ projects/cms/source/host/java/Config.java 2002/05/21 16:47:12 1.10 @@ -1,3 +1,23 @@ +/* + * i-scream central monitoring system + * http://www.i-scream.org.uk + * Copyright (C) 2000-2002 i-scream + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + //---PACKAGE DECLARATION--- //---IMPORTS--- @@ -8,11 +28,11 @@ import java.io.*; /** * Configurator object for the JavaHost - * Will connect to the configurator manager and collect its specific + * Will connect to the filter manager and collect its specific * configuration * - * @author $Author: ab11 $ - * @version $Id: Config.java,v 1.3 2000/11/30 04:06:52 ab11 Exp $ + * @author $Author: tdb $ + * @version $Id: Config.java,v 1.10 2002/05/21 16:47:12 tdb Exp $ */ class Config { @@ -52,6 +72,8 @@ class Config { myProperties = new HashMap(); configChanged = false; + // time in seconds before first retry + filterManagerRetryTime = 10; // do the funky jibble connect(serverName, serverPort); @@ -60,7 +82,7 @@ class Config { //---PUBLIC METHODS--- public InetAddress getFilterName(){ - // will return the most recient IP address (if it is dynamic for whatever reason + // will return the most recent IP address (if it is dynamic for whatever reason) try { return InetAddress.getByName(filterName); } @@ -74,7 +96,7 @@ class Config { /** * Used to retrieve the port to send UDP packets to on the filter * - * @return an integer corrisponding to the UDP port of the filter + * @return an integer corresponding to the UDP port of the filter */ public int getFilterUDPPort(){ @@ -84,7 +106,7 @@ class Config { /** * Used to retrieve the port to send TCP heartbeats to on the filter * - * @return an integer corrisponding to the TCP of the filter + * @return an integer corresponding to the TCP of the filter */ public int getFilterTCPPort(){ @@ -116,7 +138,7 @@ class Config { Socket mySocket; configChanged = false; - System.out.println("Establishing connection with config manager"); + System.out.println("Establishing connection with filter manager"); // might throw a UnknownHostException try { @@ -129,8 +151,10 @@ class Config { // everything is fine // sendCommand("LASTMODIFIED"); lastModified = sendCommand("LASTMODIFIED"); - + fileList = sendCommand("FILELIST"); + + fQDN = sendCommand("FQDN"); // get all the properties if ( numProperties > 0 ){ // sendCommand("CONFIG"); @@ -146,7 +170,7 @@ class Config { filterName = tok.nextToken(); filterUDPPort = Integer.parseInt(tok.nextToken()); filterTCPPort = Integer.parseInt(tok.nextToken()); - + sendCommand("END"); } @@ -154,7 +178,7 @@ class Config { // close the socket mySocket.close(); - System.out.println("Completed communication with config manager"); + System.out.println("Completed communication with filter manager"); } catch ( UnknownHostException e ){ @@ -164,6 +188,18 @@ class Config { catch ( IOException e ){ // what to do System.out.println("Unable to read from socket, might not be open"); + System.out.println("Retrying in "+filterManagerRetryTime+" seconds"); + configChanged = true; + try { + Thread.sleep(filterManagerRetryTime*1000); + } + catch( InterruptedException f ){ + System.out.println("Sleep interrupted"); + } + filterManagerRetryTime = filterManagerRetryTime * 2; + // warning this WILL cause a stack overflow after a while.. + // need to fix it. + connect(serverName, serverPort); } } // connect @@ -198,6 +234,8 @@ class Config { catch ( IOException e ){ // what to do System.out.println("Unable to read from socket, might not be open"); + System.out.println("Re-establishing contact with filter manager"); + configChanged = true; } } @@ -229,6 +267,7 @@ class Config { private boolean configChanged; private String lastModified; private String fileList; + private String fQDN; private int numProperties; private HashMap myProperties; private String filterName; @@ -237,9 +276,10 @@ class Config { private ArrayList aList; private BufferedReader socketIn; private PrintWriter socketOut; + private int filterManagerRetryTime; //---STATIC ATTRIBUTES--- -} // class \ No newline at end of file +} // class