ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/client/ClientMain.java
Revision: 1.18
Committed: Thu Mar 22 18:18:14 2001 UTC (23 years, 1 month ago) by tdb
Branch: MAIN
Changes since 1.17: +4 -4 lines
Log Message:
Forgot to change the Queue names.

File Contents

# Content
1 //---PACKAGE DECLARATION---
2 package uk.org.iscream.client;
3
4 //---IMPORTS---
5 import uk.org.iscream.clientinterface.*;
6 import uk.org.iscream.componentmanager.*;
7 import uk.org.iscream.core.*;
8 import uk.org.iscream.util.*;
9
10 /**
11 * A startup component for the Local Clients.
12 *
13 * @author $Author: tdb1 $
14 * @version $Id: ClientMain.java,v 1.17 2001/03/22 17:31:43 tdb1 Exp $
15 */
16 public class ClientMain implements Component {
17
18 //---FINAL ATTRIBUTES---
19
20 /**
21 * The current CVS revision of this class
22 */
23 public static final String REVISION = "$Revision: 1.17 $";
24
25 /**
26 * The friendly name for this component, used by
27 * all related classes.
28 */
29 public static final String NAME = "LocalClient";
30
31 //---STATIC METHODS---
32
33 //---CONSTRUCTORS---
34
35 //---PUBLIC METHODS---
36
37 /**
38 * This starts the Local Client component
39 */
40 public void start() throws ComponentStartException {
41 // get references to key objects
42 _logger = _refman.getLogger();
43
44 _logger.write(toString(), Logger.SYSINIT, "coming up");
45
46 // get a reference to the configuration proxy
47 ConfigurationProxy cp = ConfigurationProxy.getInstance();
48
49 // see if these Queue's need a size limit
50 try {
51 int queueSizeLimit = Integer.parseInt(cp.getProperty(NAME, "Queue.SizeLimit"));
52 String queueRemoveAlgorithm = cp.getProperty(NAME, "Queue.RemoveAlgorithm");
53 int algorithm = StringUtils.getStringPos(queueRemoveAlgorithm, Queue.algorithms);
54 if(algorithm != -1) {
55 _logger.write(toString(), Logger.DEBUG, "Starting 2 Queues with size limit of "+queueSizeLimit+", using remove algorithm "+queueRemoveAlgorithm);
56 // we have valid values, so lets start it.
57 _alerterQueue = new Queue(queueSizeLimit, algorithm);
58 _monitorQueue = new Queue(queueSizeLimit, algorithm);
59 }
60 else {
61 _logger.write(toString(), Logger.WARNING, "Bad Queue Algorithm configuration, not known: "+queueRemoveAlgorithm);
62 // just don't activate a limit
63 _alerterQueue = new Queue();
64 _monitorQueue = new Queue();
65 }
66 } catch (PropertyNotFoundException e) {
67 _logger.write(toString(), Logger.DEBUG, "Optional config not set: "+e);
68 // just don't activate a limit
69 _alerterQueue = new Queue();
70 _monitorQueue = new Queue();
71 } catch (NumberFormatException e) {
72 _logger.write(toString(), Logger.WARNING, "Bad Queue SizeLimit configuration: "+e);
73 // just don't activate a limit
74 _alerterQueue = new Queue();
75 _monitorQueue = new Queue();
76 }
77
78 // startup monitors on these queues
79 try {
80 // try to get the interval, if this fails, we won't start up the monitor
81 int queueMonitorInterval = Integer.parseInt(cp.getProperty(NAME, "Queue.MonitorInterval"));
82 _alerterQueue.startMonitor(queueMonitorInterval*1000, _monitorQueue, NAME + " Alerter");
83 _monitorQueue.startMonitor(queueMonitorInterval*1000, _monitorQueue, NAME + " Monitor");
84 } catch (PropertyNotFoundException e) {
85 _logger.write(toString(), Logger.WARNING, "failed to find queue monitor config, disabling. " + e);
86 }
87
88 // setup the servant and connect
89 _logger.write(toString(), Logger.SYSINIT, "starting servant and connecting");
90 try {
91 ClientServant ref = new ClientServant(_monitorQueue);
92 org.omg.CORBA.Object objRef = _refman.getRootPOA().servant_to_reference(ref);
93 Client client = ClientHelper.narrow(objRef);
94
95 // this name maybe shouldn't be static
96 objRef = _refman.getCORBARef("iscream.ClientInterface.CorbaListener");
97 CorbaClientListener listener = CorbaClientListenerHelper.narrow(objRef);
98
99 _logger.write(toString(), Logger.SYSINIT, "connecting");
100 CorbaControlHandler handler = listener.connect(client, NAME);
101 handler.startData();
102 }
103 catch(Exception e) {
104 // not sure what to do here
105 // so we just log the error
106 _logger.write(toString(), Logger.ERROR, "ERROR - " + e.getMessage());
107 }
108
109 // setup the MonitorManager
110 MonitorManager monMan = MonitorManager.getInstance();
111 monMan.start();
112
113 // setup the AlerterManager
114 AlerterManager alertMan = AlerterManager.getInstance();
115 alertMan.start();
116
117 _logger.write(toString(), Logger.SYSINIT, "started");
118
119 }
120
121 /**
122 * Does a dependency check. Used mainly at startup to
123 * see if the required dependencies (components) are up
124 * and running.
125 *
126 * @return a boolean value, true if the depdencies are satisfied
127 */
128 public boolean depCheck() {
129 try {
130 org.omg.CORBA.Object obj;
131 // first check the ConfigurationManager is alive
132 obj = _refman.getCORBARef("iscream.ConfigurationManager");
133 // then get some info on the CLI
134 ConfigurationProxy cp = ConfigurationProxy.getInstance();
135 String cli = cp.getProperty("RootFilter", "RootFilter.realtimeInterfaceName");
136 // finally check the CLI is alive
137 obj = _refman.getCORBARef("iscream.ClientInterface." + cli);
138 } catch(ComponentCORBAException e) {
139 System.err.println(toString() + ": Dependency Failure: "+e);
140 return false;
141 } catch(PropertyNotFoundException e) {
142 System.err.println(toString() + ": Unable to obtain configuration: "+e);
143 return false;
144 }
145 // dependency check suceeded
146 return true;
147 }
148
149 /**
150 * Overrides the {@link java.lang.Object#toString() Object.toString()}
151 * method to provide clean logging (every class should have this).
152 *
153 * This uses the uk.org.iscream.util.FormatName class
154 * to format the toString()
155 *
156 * @return the name of this class and its CVS revision
157 */
158 public String toString() {
159 return FormatName.getName(
160 NAME,
161 getClass().getName(),
162 REVISION);
163 }
164
165 //---PRIVATE METHODS---
166
167 //---ACCESSOR/MUTATOR METHODS---
168
169 //---ATTRIBUTES---
170
171 /**
172 * This holds a reference to the
173 * system logger that is being used.
174 */
175 private Logger _logger;
176
177 /**
178 * A reference to the reference manager in use
179 */
180 private ReferenceManager _refman = ReferenceManager.getInstance();
181
182 //---STATIC ATTRIBUTES---
183
184 /**
185 * A queue for the alerter manager
186 */
187 public static Queue _alerterQueue;
188
189 /**
190 * A queue for the monitor manager
191 */
192 public static Queue _monitorQueue;
193
194 }