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.18
Committed: Fri Feb 23 17:07:07 2001 UTC (23 years, 3 months ago) by ajm
Branch: MAIN
Changes since 1.17: +8 -5 lines
Log Message:
now only uses the reference manager on calls to start()

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.17 2001/02/21 19:11:28 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.17 $";
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 // configuration variables we require
45 String ourName = null;
46 int listenPort = 0;
47 int queueMonitorInterval = 0;
48
49 Configuration config = _refman.getCM().getConfiguration("ClientInterface");
50 if (config == null) {
51 throw new ComponentStartException("Unable to obtain configuration for component");
52 }
53 else {
54 try {
55 // get the configuration properties we need
56 ourName = config.getProperty("RootFilter.realtimeInterfaceName");
57 listenPort = Integer.parseInt(config.getProperty("ClientInterface.listenPort"));
58 queueMonitorInterval = Integer.parseInt(config.getProperty("Queue.MonitorInterval"));
59 } catch (org.omg.CORBA.MARSHAL e) {
60 throw new ComponentStartException("Unable to obtain requried configuration property for component");
61 }
62 }
63
64 // now we have the name of the interface we set it
65 NAME = ourName;
66
67 _logger.write(toString(), Logger.SYSINIT, "configured");
68
69 // Setup a PacketSorter
70 PacketSorter ps = new PacketSorter(queueMonitorInterval);
71 ps.start();
72
73 // ClientInterfaceServant start (for inbound data)
74 _logger.write(toString(), Logger.DEBUG, "starting servant for inbound data");
75 ClientInterfaceServant ciServant = new ClientInterfaceServant(ps);
76 _refman.bindToOrb(ciServant, "iscream.ClientInterface." + ClientInterfaceMain.NAME);
77
78 // Startup the TCPListener
79 TCPClientListener tcpClientListener = new TCPClientListener(listenPort, ps, queueMonitorInterval);
80 tcpClientListener.start();
81
82 // Startup the CORBA Listener
83 _logger.write(toString(), Logger.DEBUG, "starting servant for inbound clients");
84 CorbaClientListenerServant corbaServant = new CorbaClientListenerServant(ps, queueMonitorInterval);
85 // !!! verify this name is correct at some point !!!
86 _refman.bindToOrb(corbaServant, "iscream.ClientInterface.CorbaListener");
87
88 _logger.write(toString(), Logger.SYSINIT, "started");
89 }
90
91 /**
92 * Overrides the {@link java.lang.Object#toString() Object.toString()}
93 * method to provide clean logging (every class should have this).
94 *
95 * This uses the uk.ac.ukc.iscream.util.NameFormat class
96 * to format the toString()
97 *
98 * @return the name of this class and its CVS revision
99 */
100 public String toString() {
101 return FormatName.getName(
102 NAME,
103 getClass().getName(),
104 REVISION);
105 }
106
107 //---PRIVATE METHODS---
108
109 //---ACCESSOR/MUTATOR METHODS---
110
111 //---ATTRIBUTES---
112
113 /**
114 * This holds a reference to the
115 * system logger that is being used.
116 */
117 private Logger _logger;
118
119 /**
120 * A reference to the reference manager in use
121 */
122 private ReferenceManager _refman;
123
124 //---STATIC ATTRIBUTES---
125
126 /**
127 * The friendly name for this component, used by
128 * all related classes.
129 * This is set from the configuration.
130 */
131 public static String NAME;
132
133 }