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
Revision: 1.20
Committed: Wed Mar 14 01:34:22 2001 UTC (23 years, 2 months ago) by tdb
Branch: MAIN
Changes since 1.19: +24 -4 lines
Log Message:
New dependency checking. The old method was to attempt to start a Component, and
if it failed, it probably had a depdency problem. The approach now is to ask the
Component to perform a dependency check first, then if this suceeds, have a go
at actually starting it up.
The actual dependency check is a bit neater and more precise than before, and
should be much more fool proof. The order the components are specified in the
default.properties file is now irrelevant, although the "correct" order would
certainly increase booting time.

File Contents

# User Rev Content
1 ajm 1.3 //---PACKAGE DECLARATION---
2     package uk.ac.ukc.iscream.clientinterface;
3    
4     //---IMPORTS---
5 tdb 1.6 import uk.ac.ukc.iscream.componentmanager.*;
6 ajm 1.3 import uk.ac.ukc.iscream.core.*;
7 tdb 1.7 import uk.ac.ukc.iscream.util.*;
8 ajm 1.3
9     /**
10 ajm 1.4 * This class starts the real time clients
11     * client interface.
12     * This is an iscream component that sends data
13     * direct to clients running on desktops to provide
14     * real time information.
15 ajm 1.3 *
16 tdb 1.20 * @author $Author: tdb1 $
17     * @version $Id: ClientInterfaceMain.java,v 1.19 2001/03/13 18:37:08 tdb1 Exp $
18 ajm 1.3 */
19 tdb 1.8 public class ClientInterfaceMain implements Component {
20 ajm 1.3
21     //---FINAL ATTRIBUTES---
22    
23     /**
24     * The current CVS revision of this class
25     */
26 tdb 1.20 public static final String REVISION = "$Revision: 1.19 $";
27 ajm 1.3
28     //---STATIC METHODS---
29    
30 ajm 1.4 //---CONSTRUCTORS---
31 ajm 1.3
32 ajm 1.4 //---PUBLIC METHODS---
33 ajm 1.3
34 ajm 1.4 /**
35     * This method starts the ClientInterface
36     */
37     public void start() throws ComponentStartException {
38 ajm 1.18 // get references to key objects
39     _refman = ReferenceManager.getInstance();
40     _logger = ReferenceManager.getInstance().getLogger();
41    
42 ajm 1.4 _logger.write(toString(), Logger.SYSINIT, "coming up");
43 tdb 1.19
44    
45     ConfigurationProxy cp = ConfigurationProxy.getInstance();
46     String configName = "ClientInterface";
47    
48     // set our name
49     try {
50     NAME = cp.getProperty(configName, "RootFilter.realtimeInterfaceName");
51     } catch (PropertyNotFoundException e) {
52     NAME = null;
53     _logger.write(toString(), Logger.WARNING, "ClientInterface name not set: "+e);
54 tdb 1.14 }
55 ajm 1.4
56     _logger.write(toString(), Logger.SYSINIT, "configured");
57 tdb 1.10
58 tdb 1.11 // Setup a PacketSorter
59 tdb 1.19 PacketSorter ps = new PacketSorter();
60 tdb 1.12 ps.start();
61 tdb 1.10
62 ajm 1.3 // ClientInterfaceServant start (for inbound data)
63 ajm 1.4 _logger.write(toString(), Logger.DEBUG, "starting servant for inbound data");
64 tdb 1.11 ClientInterfaceServant ciServant = new ClientInterfaceServant(ps);
65 ajm 1.4 _refman.bindToOrb(ciServant, "iscream.ClientInterface." + ClientInterfaceMain.NAME);
66 ajm 1.3
67 tdb 1.13 // Startup the TCPListener
68 tdb 1.19 TCPClientListener tcpClientListener = new TCPClientListener(ps);
69 tdb 1.9 tcpClientListener.start();
70 tdb 1.16
71     // Startup the CORBA Listener
72     _logger.write(toString(), Logger.DEBUG, "starting servant for inbound clients");
73 tdb 1.19 CorbaClientListenerServant corbaServant = new CorbaClientListenerServant(ps);
74 tdb 1.16 // !!! verify this name is correct at some point !!!
75     _refman.bindToOrb(corbaServant, "iscream.ClientInterface.CorbaListener");
76 ajm 1.3
77 ajm 1.4 _logger.write(toString(), Logger.SYSINIT, "started");
78 ajm 1.3 }
79 tdb 1.20
80     /**
81     * Does a dependency check. Used mainly at startup to
82     * see if the required dependencies (components) are up
83     * and running.
84     *
85     * @return a boolean value, true if the depdencies are satisfied
86     */
87     public boolean depCheck() {
88     try {
89     org.omg.CORBA.Object obj;
90     obj = _refman.getCORBARef("iscream.Logger");
91     obj = _refman.getCORBARef("iscream.ConfigurationManager");
92     } catch(ComponentCORBAException e) {
93     _logger.write(toString(), Logger.WARNING, "Dependency Failure: "+e);
94     return false;
95     }
96     // dependency check suceeded
97     return true;
98     }
99    
100 ajm 1.4 /**
101     * Overrides the {@link java.lang.Object#toString() Object.toString()}
102     * method to provide clean logging (every class should have this).
103     *
104     * This uses the uk.ac.ukc.iscream.util.NameFormat class
105     * to format the toString()
106     *
107     * @return the name of this class and its CVS revision
108     */
109     public String toString() {
110     return FormatName.getName(
111 ajm 1.5 NAME,
112 ajm 1.4 getClass().getName(),
113     REVISION);
114     }
115 ajm 1.3
116     //---PRIVATE METHODS---
117    
118     //---ACCESSOR/MUTATOR METHODS---
119    
120     //---ATTRIBUTES---
121 ajm 1.4
122     /**
123     * This holds a reference to the
124     * system logger that is being used.
125     */
126 ajm 1.18 private Logger _logger;
127 ajm 1.4
128     /**
129     * A reference to the reference manager in use
130     */
131 ajm 1.18 private ReferenceManager _refman;
132 ajm 1.4
133 ajm 1.3 //---STATIC ATTRIBUTES---
134    
135 ajm 1.4 /**
136     * The friendly name for this component, used by
137     * all related classes.
138     * This is set from the configuration.
139     */
140     public static String NAME;
141    
142     }