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

# Content
1 //---PACKAGE DECLARATION---
2 package uk.ac.ukc.iscream.clientinterface;
3
4 //---IMPORTS---
5 import uk.ac.ukc.iscream.componentmanager.*;
6 import uk.ac.ukc.iscream.core.*;
7 import uk.ac.ukc.iscream.util.*;
8
9 /**
10 * 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 *
16 * @author $Author: tdb1 $
17 * @version $Id: ClientInterfaceMain.java,v 1.19 2001/03/13 18:37:08 tdb1 Exp $
18 */
19 public class ClientInterfaceMain implements Component {
20
21 //---FINAL ATTRIBUTES---
22
23 /**
24 * The current CVS revision of this class
25 */
26 public static final String REVISION = "$Revision: 1.19 $";
27
28 //---STATIC METHODS---
29
30 //---CONSTRUCTORS---
31
32 //---PUBLIC METHODS---
33
34 /**
35 * This method starts the ClientInterface
36 */
37 public void start() throws ComponentStartException {
38 // get references to key objects
39 _refman = ReferenceManager.getInstance();
40 _logger = ReferenceManager.getInstance().getLogger();
41
42 _logger.write(toString(), Logger.SYSINIT, "coming up");
43
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 }
55
56 _logger.write(toString(), Logger.SYSINIT, "configured");
57
58 // Setup a PacketSorter
59 PacketSorter ps = new PacketSorter();
60 ps.start();
61
62 // ClientInterfaceServant start (for inbound data)
63 _logger.write(toString(), Logger.DEBUG, "starting servant for inbound data");
64 ClientInterfaceServant ciServant = new ClientInterfaceServant(ps);
65 _refman.bindToOrb(ciServant, "iscream.ClientInterface." + ClientInterfaceMain.NAME);
66
67 // Startup the TCPListener
68 TCPClientListener tcpClientListener = new TCPClientListener(ps);
69 tcpClientListener.start();
70
71 // Startup the CORBA Listener
72 _logger.write(toString(), Logger.DEBUG, "starting servant for inbound clients");
73 CorbaClientListenerServant corbaServant = new CorbaClientListenerServant(ps);
74 // !!! verify this name is correct at some point !!!
75 _refman.bindToOrb(corbaServant, "iscream.ClientInterface.CorbaListener");
76
77 _logger.write(toString(), Logger.SYSINIT, "started");
78 }
79
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 /**
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 NAME,
112 getClass().getName(),
113 REVISION);
114 }
115
116 //---PRIVATE METHODS---
117
118 //---ACCESSOR/MUTATOR METHODS---
119
120 //---ATTRIBUTES---
121
122 /**
123 * This holds a reference to the
124 * system logger that is being used.
125 */
126 private Logger _logger;
127
128 /**
129 * A reference to the reference manager in use
130 */
131 private ReferenceManager _refman;
132
133 //---STATIC ATTRIBUTES---
134
135 /**
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 }