ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/filter/FilterMain.java
(Generate patch)

Comparing projects/cms/source/server/uk/org/iscream/cms/server/filter/FilterMain.java (file contents):
Revision 1.6 by tdb, Thu Nov 23 01:44:05 2000 UTC vs.
Revision 1.15 by ajm, Thu Nov 30 03:05:47 2000 UTC

# Line 1 | Line 1
1   //---PACKAGE DECLARATION---
2 + package uk.ac.ukc.iscream.filter;
3  
4   //---IMPORTS---
5 + import uk.ac.ukc.iscream.util.*;
6   import uk.ac.ukc.iscream.core.*;
7   import uk.ac.ukc.iscream.filter.*;
6 import org.omg.CORBA.*;
7 import org.omg.CosNaming.*;
8 import org.omg.PortableServer.*;
8  
9   /**
10   * A Filter Startup Class
# Line 25 | Line 24 | class FilterMain {
24   //---STATIC METHODS---
25  
26      public static void main(String[] args) {
27 +        // ***************************************
28 +        // VERY TEMPORARY - will find a better way
29          System.setProperty("org.omg.CORBA.ORBClass","jacorb.orb.ORB");
30          System.setProperty("org.omg.CORBA.ORBSingletonClass","jacorb.orb.ORBSingleton");
31 <        
31 >        // ***************************************
32 >
33          // get our name from the command line
34          String ourName = "";
35          if (args.length == 1) {
# Line 39 | Line 41 | class FilterMain {
41          
42          // can't have a real toString() :)
43          String toString = "Filter{" + ourName + "}(" + REVISION.substring(11, REVISION.length() - 2) + ")";
44 +                
45 +        ReferenceManager refman = ReferenceManager.init(null, ourName);
46          
47 <        try {        
44 <            ORB orb = ORB.init(args, null);
47 >        refman.getLogger().write(toString, Logger.SYSINIT, "coming up");
48              
49 <            // something to hold objects
50 <            org.omg.CORBA.Object objRef = null;    
51 <            
52 <            // get the Root POA
50 <            objRef = orb.resolve_initial_references("RootPOA");
51 <            POA poa = POAHelper.narrow(objRef);
52 <            
53 <            // get a hook to the name service
54 <            objRef = orb.resolve_initial_references("NameService");
55 <            NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
56 <                
57 <            // get a ref to the ConfigurationManager, Logger & the FilterManager
58 <            
59 <            objRef = ncRef.resolve(ncRef.to_name("iscream.ConfigurationManager"));
60 <            ConfigurationManager configManager = ConfigurationManagerHelper.narrow(objRef);
61 <            
62 <            objRef = ncRef.resolve(ncRef.to_name("iscream.Logger"));
63 <            Logger logger = LoggerHelper.narrow(objRef);
64 <            
65 <            logger.write(toString, Logger.SYSINIT, "coming up");
66 <            
67 <            
68 <            // **** THIS SECTION WILL NEED CHANGING TO GET RELEVANT CONFIG
69 <            // **** Please ignore this block of code, it's just "copy/paste" :)
70 <            
71 <            // get the config
72 <            Configuration myConfig = configManager.getConfiguration(ourName);
73 <            
74 <            // read some config here
75 <            int port = 0;
76 <            String parentFilterName = null;
77 <  
78 <            // did we?
79 <            if (myConfig == null) {
80 <                System.out.println("Failed: is it there?, can you read it?");
81 <                System.exit(1);
82 <            } else {
83 <              
84 <                // get the property
85 <                try {
86 <                    //QUERY HERE.... ???
87 <                    port = new Integer(myConfig.getProperty("Filter.listenPort")).intValue();
88 <                    parentFilterName = myConfig.getProperty("Filter.parentFilter");
89 <                } catch (org.omg.CORBA.MARSHAL e) {
90 <                    System.out.println("Caught org.omg.CORBA.MARSHAL, must be a null we got back");
91 <                    //System.exit(1);
92 <                }
93 <            }
94 <            
95 <            logger.write(toString, Logger.SYSINIT, "configured");
96 <            
97 <            // **** END COMMENT
98 <            
99 <            // **** INITIAL FILTER MANAGER COMMUNICATIONS HERE
100 <            
101 <            // get a root (CHANGE to use FilterManager)
102 <            objRef = ncRef.resolve(ncRef.to_name("iscream.Filter." + parentFilterName));
103 <            Filter parentFilter = FilterHelper.narrow(objRef);
49 >        // configuration variables we require
50 >        int UDPListenPort = 0;
51 >        int TCPListenPort = 0;
52 >        String parentFilterName = null;
53  
54 <            // SETUP our Servant
55 <            
56 <            // create the FilterServant
57 <            FilterServant filterServant = new FilterServant(logger, parentFilter, ourName, new Integer(port).toString() , new Integer(port).toString());
54 >        Configuration config = refman.getCM().getConfiguration(refman.getName());
55 >        if (config == null) {
56 >            throw new RuntimeException ("CRITICAL:Unable to obtain configuration" +
57 >                                        "         Advise you check the i-scream log for more information.");
58 >        } else {
59 >            try {
60 >                UDPListenPort = Integer.parseInt(config.getProperty("Filter.UDPListenPort"));
61 >                TCPListenPort = Integer.parseInt(config.getProperty("Filter.TCPListenPort"));
62 >                parentFilterName = config.getProperty("Filter.parentFilter");
63 >            } catch (org.omg.CORBA.MARSHAL e) {
64 >                refman.getLogger().write(toString, Logger.FATAL, "required config property not present");
65 >                throw new RuntimeException ("CRITICAL:Unable to obtain required configuration property" +
66 >                                            "         Advise you check the i-scream log for more information.");
67  
68 <            // register ourselves
68 >            }
69 >        }
70 >        refman.getLogger().write(toString, Logger.SYSINIT, "configured");
71 >        // get parent
72 >        Filter parentFilter = FilterHelper.narrow(refman.getCORBARef("iscream.Filter." + parentFilterName));
73 >        
74 >                
75 >        
76 >        // FilterServant start (for inbound child filter data)
77 >        refman.getLogger().write(toString, Logger.DEBUG, "starting Filter Child -> Parent link for upstream parent - " + parentFilterName);
78 >        FilterServant filterServant = new FilterServant(parentFilter, TCPListenPort, UDPListenPort);
79 >        refman.bindToOrb(filterServant, "iscream.Filter." + refman.getName());
80  
81 <            // and advertise it to the naming context
82 <            objRef = poa.servant_to_reference(filterServant);
83 <            ncRef.bind(ncRef.to_name("iscream.Filter."+ourName), objRef);
81 >        // UDL Reader start (for inbound host data)
82 >        refman.getLogger().write(toString, Logger.SYSINIT, "starting Filter UDP listener");
83 >        UDPReader udpReader = new UDPReader(UDPListenPort, parentFilter);
84 >        udpReader.start();
85  
86 <            // **** END COMMENT
87 <            
88 <            // END SETUP
89 <            
90 <
91 <            /**************************************************************
92 <              Here would be an ideal place to start another thread to do
93 <              the listening part of the Filter. Ideally it should just be
94 <              created and then run(). It may be necessary to pass some of
95 <              the following parameters into the thread by the constructor.
96 <              
127 <                  Logger logger
128 <                      - a reference to a Logger object
129 <                  FilterManager filterManager
130 <                      - a reference to the system filter manager
131 <                  ConfigurationManager configManager
132 <                      - a reference to the system configuration manager
133 <                  Configuration myConfig
134 <                      - a reference to the configuration object for this
135 <                        filter instance
136 <                  String ourName
137 <                      - our "identifier" name
138 <            
139 <            **************************************************************/
140 <                                    
141 <            logger.write(toString, Logger.SYSINIT, "starting Filter UDP listener");
142 <            UDPReader udpReader = new UDPReader(port, parentFilter, logger);
143 <            udpReader.start();
144 <            logger.write(toString, Logger.SYSINIT, "Filter UDP listener started");
145 <
146 <            // TEST
147 <            parentFilter.receiveXML("<?xml version=\"1.0\" encoding=\"ISO8859-1\"?><packet><test>This is just a debugging test, we ("+ourName+") are live on port: "+port+"</test></packet>");
148 <            
149 <            // start the POA off
150 <            poa.the_POAManager().activate();
151 <                        
152 <            logger.write(toString, Logger.SYSINIT, "started");
153 <            
154 <            // now we are running, we just need to serve
155 <            // so we ask the orb to block for us until it has finished
156 <            orb.run();
157 <            
158 <        } catch (Exception e) {
159 <            System.err.println("FILTER ERROR: " + e);
160 <            e.printStackTrace(System.out);
161 <        }
86 >        // TCP Reader start (for heartbeats)
87 >        refman.getLogger().write(toString, Logger.SYSINIT, "starting Filter TCP listener");
88 >        TCPReader tcpReader = new TCPReader(TCPListenPort, parentFilter);
89 >        tcpReader.start();
90 >        
91 >        // start the POA off
92 >        // now we are running, we just need to serve
93 >        // so we ask the orb to block for us until it has finished
94 >        refman.activatePOA();
95 >        refman.getLogger().write(toString, Logger.SYSINIT, "started");
96 >        refman.getORB().run();
97      }
98  
99      /**
# Line 168 | Line 103 | class FilterMain {
103       * properly.
104       */
105      public static void usage() {
106 <        System.out.println("USAGE: java Filter <name>");
106 >        System.out.println("USAGE: java FilterMain <name>");
107          System.out.println("WHERE <name>:");
108          System.out.println("      The unique identifier for the Filter in the system.");
109          System.exit(1);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines