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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines