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

Comparing projects/cms/source/server/uk/org/iscream/cms/server/clientinterface/ClientInterfaceMain.java (file contents):
Revision 1.9 by tdb, Mon Jan 22 01:46:51 2001 UTC vs.
Revision 1.31 by tdb, Sun Aug 1 10:40:48 2004 UTC

# Line 1 | Line 1
1 + /*
2 + * i-scream central monitoring system
3 + * http://www.i-scream.org
4 + * Copyright (C) 2000-2002 i-scream
5 + *
6 + * This program is free software; you can redistribute it and/or
7 + * modify it under the terms of the GNU General Public License
8 + * as published by the Free Software Foundation; either version 2
9 + * of the License, or (at your option) any later version.
10 + *
11 + * This program is distributed in the hope that it will be useful,
12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 + * GNU General Public License for more details.
15 + *
16 + * You should have received a copy of the GNU General Public License
17 + * along with this program; if not, write to the Free Software
18 + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19 + */
20 +
21   //---PACKAGE DECLARATION---
22 < package uk.ac.ukc.iscream.clientinterface;
22 > package uk.org.iscream.cms.server.clientinterface;
23  
24   //---IMPORTS---
25 < import uk.ac.ukc.iscream.componentmanager.*;
26 < import uk.ac.ukc.iscream.core.*;
27 < import uk.ac.ukc.iscream.util.*;
25 > import uk.org.iscream.cms.server.componentmanager.*;
26 > import uk.org.iscream.cms.server.core.*;
27 > import uk.org.iscream.cms.util.*;
28  
29   /**
30   * This class starts the real time clients
# Line 29 | Line 49 | public class ClientInterfaceMain implements Component
49  
50   //---CONSTRUCTORS---
51  
52 +    /**
53 +     * Constructs a ClientInterface with the name given
54 +     *
55 +     * @param givenName the name
56 +     */
57 +    public ClientInterfaceMain(String givenName) {
58 +        NAME = givenName;
59 +    }
60 +
61   //---PUBLIC METHODS---
62  
63      /**
64       * This method starts the ClientInterface
65       */
66      public void start() throws ComponentStartException {
67 <                        
67 >        // get references to key objects
68 >        _logger = _refman.getLogger();
69 >        
70          _logger.write(toString(), Logger.SYSINIT, "coming up");
40            
41        // configuration variables we require
42        String ourName = null;
43        int listenPort = 0;
71          
72 <        Configuration config = _refman.getCM().getConfiguration("ClientInterface");
73 <        if (config == null) {
74 <            System.err.println("CRITICAL:Unable to obtain configuration" +
48 <                               "\n         Advise you check the i-scream log for more information.");
49 <            _logger.write(toString(), Logger.FATAL, "ERROR - unable to obtain configuration");
50 <            System.exit(1);
51 <        } else {
52 <            try {
53 <                ourName = config.getProperty("RootFilter.realtimeInterfaceName");
54 <                listenPort = Integer.parseInt(config.getProperty("ClientInterface.listenPort"));
55 <            } catch (org.omg.CORBA.MARSHAL e) {
56 <                System.err.println ("CRITICAL:Unable to obtain required configuration property" +
57 <                                    "\n         Advise you check the i-scream log for more information.");
58 <                _logger.write(toString(), Logger.FATAL, "ERROR - required configuration property not present");
59 <                System.exit(1);
60 <
61 <            }
62 <        }
63 <        // now we have the name of the interface we set it
64 <        NAME = ourName;
72 >        // Setup a PacketSorter
73 >        PacketSorter ps = new PacketSorter();
74 >        ps.start();
75          
66        _logger.write(toString(), Logger.SYSINIT, "configured");
67                
76          // ClientInterfaceServant start (for inbound data)
77          _logger.write(toString(), Logger.DEBUG, "starting servant for inbound data");
78 <        ClientInterfaceServant ciServant = new ClientInterfaceServant();
79 <        _refman.bindToOrb(ciServant, "iscream.ClientInterface." + ClientInterfaceMain.NAME);
78 >        try {
79 >            ClientInterfaceServant ciServant = new ClientInterfaceServant(ps);
80 >            //_refman.bindToOrb(ciServant, "iscream.ClientInterface\\." + ClientInterfaceMain.NAME);
81 >            org.omg.CORBA.Object objRef = _refman.getRootPOA().servant_to_reference(ciServant);
82 >            Client client = ClientHelper.narrow(objRef);
83 >            
84 >            String parent = ConfigurationProxy.getInstance().getProperty("ClientInterface." + ClientInterfaceMain.NAME, "ClientInterface.parent");
85 >            objRef = _refman.getCORBARef("iscream.ClientInterface\\." + parent);
86 >            CorbaClientListener listener = CorbaClientListenerHelper.narrow(objRef);
87 >            
88 >            CorbaControlHandler handler = listener.connect(client, NAME);
89 >            handler.startData();
90 >        }
91 >        catch(Exception e) {
92 >            // not sure what to do here
93 >            // so we just log the error
94 >            _logger.write(toString(), Logger.ERROR, "ERROR - " + e.getMessage());
95 >        }
96          
97 <        TCPClientListener tcpClientListener = new TCPClientListener(listenPort, ciServant);
97 >        // Startup the TCPListener
98 >        TCPClientListener tcpClientListener = new TCPClientListener(ps);
99          tcpClientListener.start();
100          
101 +        // Startup the CORBA Listener
102 +        _logger.write(toString(), Logger.DEBUG, "starting servant for inbound clients");
103 +        CorbaClientListenerServant corbaServant = new CorbaClientListenerServant(ps);
104 +        _refman.bindToOrb(corbaServant, "iscream.ClientInterface\\." + ClientInterfaceMain.NAME);
105 +        
106          _logger.write(toString(), Logger.SYSINIT, "started");
107      }
108 <
108 >    
109      /**
110 +     * Does a dependency check. Used mainly at startup to
111 +     * see if the required dependencies (components) are up
112 +     * and running.
113 +     *
114 +     * @return a boolean value, true if the depdencies are satisfied
115 +     */
116 +    public boolean depCheck() {
117 +        try {
118 +            org.omg.CORBA.Object obj;
119 +            obj = _refman.getCORBARef("iscream.Logger");
120 +            obj = _refman.getCORBARef("iscream.ConfigurationManager");
121 +            // suss out the parent client interface
122 +            ConfigurationProxy cp = ConfigurationProxy.getInstance();
123 +            String parentName = cp.getProperty("ClientInterface." + ClientInterfaceMain.NAME, "ClientInterface.parent");
124 +            // check the parent is alive
125 +            obj = _refman.getCORBARef("iscream.ClientInterface\\." + parentName);
126 +        } catch(ComponentCORBAException e) {
127 +            System.err.println(toString() + ": Dependency Failure: "+e);
128 +            return false;
129 +        } catch(PropertyNotFoundException e) {
130 +            System.err.println(toString() + ": Unable to obtain configuration: "+e);
131 +            return false;
132 +        }
133 +        // dependency check suceeded
134 +        return true;
135 +    }
136 +    
137 +    /**
138       * Overrides the {@link java.lang.Object#toString() Object.toString()}
139       * method to provide clean logging (every class should have this).
140       *
141 <     * This uses the uk.ac.ukc.iscream.util.NameFormat class
141 >     * This uses the uk.org.iscream.cms.util.NameFormat class
142       * to format the toString()
143       *
144       * @return the name of this class and its CVS revision
# Line 102 | Line 160 | public class ClientInterfaceMain implements Component
160       * This holds a reference to the
161       * system logger that is being used.
162       */
163 <    private Logger _logger = ReferenceManager.getInstance().getLogger();
163 >    private Logger _logger;
164  
165      /**
166       * A reference to the reference manager in use

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines