package senseiTests.randomCounter.corba; import sensei.util.Configuration; import sensei.util.Parameters; import sensei.util.ParameterException; import sensei.gmns.GroupMembershipNamingServiceFactory; import sensei.middleware.gmns.GroupMembershipNamingService; import sensei.middleware.util.ORBcentral; import java.io.IOException; import java.util.Vector; import org.omg.CORBA.ORB; public class Main { public Main(String args[]) { Parameters parameters = readArgs(args); if (parameters!=null) { ORB orb = null; try { orb = ORB.init(args, System.getProperties()); ORBcentral.setORB(orb); GroupMembershipNamingService service = GroupMembershipNamingServiceFactory.load(); if (service==null) { System.err.println("GroupMembershipNamingService is not available"); } else { if (parameters.hasParameter(SERVER)) { new Server(service, parameters.getArgument(0)); orb.run(); } else { new Client(service, parameters.getArgument(0)); System.exit(0); } } } catch(ParameterException ex) { System.out.println(ex); } catch(Exception ex) { ex.printStackTrace(); } if (orb!=null) try {orb.destroy();}catch(Exception ex){} } } //************************************************************************************* //**************************** READ ARGS ********************************************** //************************************************************************************* /** * Reads the command line arguments, and initializes the * Configuration singleton class; arguments are translated into the Parameter class and * returned. * It returns null if arguments are incorrect or they do not require any GMNS processing **/ Parameters readArgs(String args[]) { Parameters ret = null; try { Vector params=new Vector(); params.add(CONF); params.add(SERVER); params.add(HELP); ret = new Parameters(args, params, null,1,1); if (ret.hasParameter(HELP)) { ret=null; help(); } else { if (ret.hasParameter(CONF)) Configuration.getSingleton(ret.getParameter(CONF), ret.getDefinitions()); else Configuration.getSingleton(ret.getDefinitions()); } } catch (ParameterException pex) { System.err.println("Arguments error: " + pex.getMessage()); help(); } catch (IOException ioex) { System.err.println("Error reading the configuration file: " + ioex.getMessage()); } return ret; } //************************************************************************************* //**************************** HELP *************************************************** //************************************************************************************* static void help() { System.out.println("arguments: [options...] groupName\n\tOptions:\n\t\t" + CONF + "=configuration file\n\t\t\t--> sensei properties file \n\t\t" + SERVER + "\n\t\t\t--> indicates weather the counter behaves as a client or a server\n\t\t" + HELP + "\n\t\t\t--> shows this brief help \n\n\t" ); } //************************************************************************************* //**************************** DATA MEMBERS ******************************************* //************************************************************************************* static final String CONF = "config"; static final String SERVER = "server"; static final String HELP = "help"; public static void main(String args[]) { new Main(args); } }