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.2 by tdb, Tue Nov 21 22:34:04 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
53 <            objRef = orb.resolve_initial_references("RootPOA");
54 <            POA poa = POAHelper.narrow(objRef);
55 <            
56 <            // get a hook to the name service
57 <            objRef = orb.resolve_initial_references("NameService");
58 <            NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
59 <                
60 <            // get a ref to the ConfigurationManager, Logger & the FilterManager
61 <            
62 <            objRef = ncRef.resolve(ncRef.to_name("iscream.ConfigurationManager"));
63 <            ConfigurationManager configManager = ConfigurationManagerHelper.narrow(objRef);
64 <            
65 <            objRef = ncRef.resolve(ncRef.to_name("iscream.Logger"));
66 <            Logger logger = LoggerHelper.narrow(objRef);
67 <            
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 <                }
49 >        // configuration variables we require
50 >        int UDPListenPort = 0;
51 >        int TCPListenPort = 0;
52 >        String parentFilterName = null;
53 >
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              }
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("test via Root1");
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);
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 +        // 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 +        // 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);
# Line 186 | Line 121 | class FilterMain {
121  
122   //---STATIC ATTRIBUTES---
123  
124 < }            
124 > }            

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines