--- projects/cms/source/server/uk/org/iscream/cms/server/filtermanager/HostInit.java 2001/02/28 11:05:20 1.21 +++ projects/cms/source/server/uk/org/iscream/cms/server/filtermanager/HostInit.java 2001/03/05 02:26:01 1.22 @@ -8,6 +8,7 @@ import uk.ac.ukc.iscream.util.*; import uk.ac.ukc.iscream.componentmanager.*; import java.net.*; import java.io.*; +import java.util.*; /** * Handles setting up a host. @@ -15,7 +16,7 @@ import java.io.*; * and a reference to a Filter to which it should pass data. * * @author $Author: tdb $ - * @version $Id: HostInit.java,v 1.21 2001/02/28 11:05:20 tdb Exp $ + * @version $Id: HostInit.java,v 1.22 2001/03/05 02:26:01 tdb Exp $ */ class HostInit extends Thread { @@ -24,7 +25,7 @@ class HostInit extends Thread { /** * The current CVS revision of this class */ - public final String REVISION = "$Revision: 1.21 $"; + public final String REVISION = "$Revision: 1.22 $"; //---STATIC METHODS--- @@ -127,12 +128,32 @@ class HostInit extends Thread { } else { // send info - String parentFilter = myConfig.getProperty("Host.filter"); - _logger.write(toString(), Logger.DEBUG, " looking for parent - " + parentFilter); - Filter filter = FilterHelper.narrow(ReferenceManager.getInstance().getCORBARef("iscream.Filter." + parentFilter)); - _socketOut.println(filter.getHostName() + ";" - + filter.getUDPPort() + ";" - + filter.getTCPPort()); + String filterList = myConfig.getProperty("Host.filter"); + Filter filterRef = null; + String filter = null; + StringTokenizer st = new StringTokenizer(filterList, ";"); + while (filterRef==null && st.hasMoreTokens()) { + filter = st.nextToken(); + _logger.write(toString(), Logger.DEBUG, " looking for filter- " + filter); + try { + filterRef = FilterHelper.narrow(ReferenceManager.getInstance().getCORBARef("iscream.Filter." + filter)); + } catch (Exception e) { // THIS SHOULD BE A MORE SPECIFIC EXCEPTION + _logger.write(toString(), Logger.DEBUG, " unable to find filter- " + filter); + } + } + + // hopefully we found a filter + if(filterRef != null) { + _logger.write(toString(), Logger.DEBUG, " found filter- " + filter); + // tell the host about it... + _socketOut.println(filterRef.getHostName() + ";" + + filterRef.getUDPPort() + ";" + + filterRef.getTCPPort()); + } + else { + // ...or throw a wobbly + throw new IOException("unable to find filter for host"); + } } // confirm that all is ok