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/CorbaControlHandlerServant.java
Revision: 1.7
Committed: Tue Mar 13 18:37:08 2001 UTC (23 years, 2 months ago) by tdb
Branch: MAIN
Changes since 1.6: +12 -12 lines
Log Message:
Now makes use of the ConfigurationProxy.

File Contents

# Content
1 //---PACKAGE DECLARATION---
2 package uk.ac.ukc.iscream.clientinterface;
3
4 //---IMPORTS---
5 import uk.ac.ukc.iscream.util.*;
6 import uk.ac.ukc.iscream.componentmanager.*;
7 import uk.ac.ukc.iscream.core.*;
8 import uk.ac.ukc.iscream.client.*;
9
10
11 /**
12 * Acts as a Control Handler to a CORBA based client.
13 *
14 * !!! FUNDAMENTAL DESIGN PROBLEM !!!
15 * !!! Need a way to "shutdown" this class !!!
16 *
17 * @author $Author: tdb1 $
18 * @version $Id: CorbaControlHandlerServant.java,v 1.6 2001/02/28 19:04:00 tdb1 Exp $
19 */
20 class CorbaControlHandlerServant extends CorbaControlHandlerPOA {
21
22 //---FINAL ATTRIBUTES---
23
24 /**
25 * The current CVS revision of this class
26 */
27 public final String REVISION = "$Revision: 1.6 $";
28
29 //---STATIC METHODS---
30
31 //---CONSTRUCTORS---
32
33 /**
34 * Construct a new CorbaControlHandlerServant.
35 *
36 * @param packetSorter A reference to the PacketSorter in the component
37 * @param client A reference to the "servant" part of the connecting client.
38 * @param queueMonitorInterval The interval at which to monitor our Queue.
39 * @param clientname A name to identify the client.
40 */
41 public CorbaControlHandlerServant(PacketSorter packetSorter, Client client, String clientname) {
42 _packetSorter = packetSorter;
43 _hostList = "";
44 _client = client;
45 _clientname = clientname;
46 _dataHandler = null;
47 _logger.write(toString(), Logger.SYSINIT, "created");
48 }
49
50 //---PUBLIC METHODS---
51
52 /**
53 * Start sending data to the client.
54 *
55 * @return a boolean stating whether the attempt to start succeeded
56 */
57 public boolean startData() {
58 if(_dataHandler == null) {
59 // create a new DataHandler
60 CorbaDataHandler dh = new CorbaDataHandler(_client);
61 // register the Queue
62 _packetSorter.register(dh.getQueue(), _hostList);
63 try {
64 // startup a monitor on the DataHandler's queue
65 ConfigurationProxy cp = ConfigurationProxy.getInstance();
66 int queueMonitorInterval = Integer.parseInt(cp.getProperty("ClientInterface", "Queue.MonitorInterval"));
67 String queueName = _name + " CorbaHandler:"+_clientname;
68 dh.getQueue().startMonitor(queueMonitorInterval*1000, _packetSorter.getQueue(), queueName);
69 } catch (PropertyNotFoundException e) {
70 _logger.write(toString(), Logger.WARNING, "failed to find queue monitor config, disabling. " + e);
71 }
72 // start the DataHandler running
73 dh.start();
74 // keep a reference
75 _dataHandler = dh;
76 return true;
77 }
78 else {
79 return false;
80 }
81 }
82
83 /**
84 * Stop sending data to the client.
85 *
86 * @return a boolean stating whether the attempt to stop succeeded
87 */
88 public boolean stopData() {
89 if(_dataHandler != null) {
90 // deregister the Queue
91 _packetSorter.deregister(_dataHandler.getQueue(), _hostList);
92 // stop the DataHandler
93 _dataHandler.shutdown();
94 // destroy the reference
95 _dataHandler = null;
96 return true;
97 }
98 else {
99 return false;
100 }
101 }
102
103 /**
104 * Sets the host list for the Client to the requested semi-colon separated
105 * list of hostnames. This will only succeed if we are not sending data.
106 *
107 * @param hostList A semi-colon separated list of hostnames to use.
108 * @return Whether the request succeeded.
109 */
110 public boolean setHostList(String hostList) {
111 if(_dataHandler == null) {
112 _hostList = hostList;
113 return true;
114 }
115 else {
116 return false;
117 }
118 }
119
120 /**
121 * Overrides the {@link java.lang.Object#toString() Object.toString()}
122 * method to provide clean logging (every class should have this).
123 *
124 * This uses the uk.ac.ukc.iscream.util.NameFormat class
125 * to format the toString()
126 *
127 * @return the name of this class and its CVS revision
128 */
129 public String toString() {
130 return FormatName.getName(
131 _name,
132 getClass().getName(),
133 REVISION);
134 }
135
136 //---PRIVATE METHODS---
137
138 //---ACCESSOR/MUTATOR METHODS---
139
140 //---ATTRIBUTES---
141
142 /**
143 * This is the friendly identifier of the
144 * component this class is running in.
145 * eg, a Filter may be called "filter1",
146 * If this class does not have an owning
147 * component, a name from the configuration
148 * can be placed here. This name could also
149 * be changed to null for utility classes.
150 */
151 private String _name = ClientInterfaceMain.NAME;
152
153 /**
154 * This holds a reference to the
155 * system logger that is being used.
156 */
157 private Logger _logger = ReferenceManager.getInstance().getLogger();
158
159 /**
160 * A reference to the PacketSorter.
161 */
162 private PacketSorter _packetSorter;
163
164 /**
165 * The host list the Client has requested
166 */
167 private String _hostList;
168
169 /**
170 * The "servant" part of the client we're connected to.
171 */
172 private Client _client;
173
174 /**
175 * A reference to our DataHandler, if we have one
176 */
177 private CorbaDataHandler _dataHandler;
178
179 /**
180 * A name to identify the client
181 */
182 private String _clientname;
183
184 //---STATIC ATTRIBUTES---
185
186 }