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.11 by tdb, Wed Nov 29 19:26:00 2000 UTC vs.
Revision 1.15 by ajm, Thu Nov 30 03:05:47 2000 UTC

# Line 2 | Line 2
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.*;
7 import org.omg.CORBA.*;
8 import org.omg.CosNaming.*;
9 import org.omg.PortableServer.*;
8  
9   /**
10   * A Filter Startup Class
# Line 26 | 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 40 | 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 {        
45 <            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
51 <            objRef = orb.resolve_initial_references("RootPOA");
52 <            POA poa = POAHelper.narrow(objRef);
53 <            
54 <            // get a hook to the name service
55 <            objRef = orb.resolve_initial_references("NameService");
56 <            NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
57 <                
58 <            // get a ref to the ConfigurationManager, Logger & the FilterManager
59 <            
60 <            objRef = ncRef.resolve(ncRef.to_name("iscream.ConfigurationManager"));
61 <            ConfigurationManager configManager = ConfigurationManagerHelper.narrow(objRef);
62 <            
63 <            objRef = ncRef.resolve(ncRef.to_name("iscream.Logger"));
64 <            Logger logger = LoggerHelper.narrow(objRef);
65 <            
66 <            logger.write(toString, Logger.SYSINIT, "coming up");
67 <            
68 <            
69 <            // **** THIS SECTION WILL NEED CHANGING TO GET RELEVANT CONFIG
70 <            // **** Please ignore this block of code, it's just "copy/paste" :)
71 <            
72 <            // get the config
73 <            Configuration myConfig = configManager.getConfiguration(ourName);
74 <            
75 <            // read some config here
76 <            int UDPport = 0;
77 <            int TCPport = 0;
78 <            String parentFilterName = null;
79 <  
80 <            // did we?
81 <            if (myConfig == null) {
82 <                System.out.println("Failed: is it there?, can you read it?");
83 <                System.exit(1);
84 <            } else {
85 <              
86 <                // get the property
87 <                try {
88 <                    //QUERY HERE.... ???
89 <                    UDPport = new Integer(myConfig.getProperty("Filter.UDPlistenPort")).intValue();
90 <                    TCPport = new Integer(myConfig.getProperty("Filter.TCPlistenPort")).intValue();
91 <                    parentFilterName = myConfig.getProperty("Filter.parentFilter");
92 <                } catch (org.omg.CORBA.MARSHAL e) {
93 <                    System.out.println("Caught org.omg.CORBA.MARSHAL, must be a null we got back");
94 <                    //System.exit(1);
95 <                }
96 <            }
97 <            
98 <            logger.write(toString, Logger.SYSINIT, "configured");
99 <            
100 <            // **** END COMMENT
101 <            
102 <            // **** INITIAL FILTER MANAGER COMMUNICATIONS HERE
103 <            
104 <            // get a root (CHANGE to use FilterManager)
105 <            objRef = ncRef.resolve(ncRef.to_name("iscream.Filter." + parentFilterName));
106 <            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(TCPport).toString() , new Integer(UDPport).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 <              
130 <                  Logger logger
131 <                      - a reference to a Logger object
132 <                  FilterManager filterManager
133 <                      - a reference to the system filter manager
134 <                  ConfigurationManager configManager
135 <                      - a reference to the system configuration manager
136 <                  Configuration myConfig
137 <                      - a reference to the configuration object for this
138 <                        filter instance
139 <                  String ourName
140 <                      - our "identifier" name
141 <            
142 <            **************************************************************/
143 <                                    
144 <            logger.write(toString, Logger.SYSINIT, "starting Filter UDP listener");
145 <            UDPReader udpReader = new UDPReader(UDPport, parentFilter, logger);
146 <            udpReader.start();
147 <            logger.write(toString, Logger.SYSINIT, "Filter UDP listener started");
148 <
149 <            logger.write(toString, Logger.SYSINIT, "starting Filter TCP listener");
150 <            TCPReader tcpReader = new TCPReader(logger, configManager, TCPport, parentFilter);
151 <            tcpReader.start();
152 <            logger.write(toString, Logger.SYSINIT, "Filter TCP listener started");
153 <
154 <            // TEST
155 <            //parentFilter.receiveXML("<?xml version=\"1.0\" encoding=\"ISO8859-1\"?><packet><test>This is just a debugging test, we ("+ourName+") are live on UDPport: "+UDPport+"</test></packet>");
156 <            
157 <            // start the POA off
158 <            poa.the_POAManager().activate();
159 <                        
160 <            logger.write(toString, Logger.SYSINIT, "started");
161 <            
162 <            // now we are running, we just need to serve
163 <            // so we ask the orb to block for us until it has finished
164 <            orb.run();
165 <            
166 <        } catch (Exception e) {
167 <            System.err.println("FILTER ERROR: " + e);
168 <            e.printStackTrace(System.out);
169 <        }
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      /**

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines