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, 2 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

# 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.7 * @author $Author: tdb1 $
17 ajm 1.18 * @version $Id: ClientInterfaceMain.java,v 1.17 2001/02/21 19:11:28 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 ajm 1.18 public static final String REVISION = "$Revision: 1.17 $";
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 ajm 1.3
44     // configuration variables we require
45     String ourName = null;
46     int listenPort = 0;
47 tdb 1.17 int queueMonitorInterval = 0;
48 ajm 1.3
49 ajm 1.4 Configuration config = _refman.getCM().getConfiguration("ClientInterface");
50 ajm 1.3 if (config == null) {
51 tdb 1.15 throw new ComponentStartException("Unable to obtain configuration for component");
52 tdb 1.14 }
53     else {
54 ajm 1.3 try {
55 tdb 1.14 // get the configuration properties we need
56 ajm 1.3 ourName = config.getProperty("RootFilter.realtimeInterfaceName");
57     listenPort = Integer.parseInt(config.getProperty("ClientInterface.listenPort"));
58 tdb 1.17 queueMonitorInterval = Integer.parseInt(config.getProperty("Queue.MonitorInterval"));
59 ajm 1.3 } catch (org.omg.CORBA.MARSHAL e) {
60 tdb 1.15 throw new ComponentStartException("Unable to obtain requried configuration property for component");
61 ajm 1.3 }
62     }
63 tdb 1.14
64 ajm 1.3 // now we have the name of the interface we set it
65 ajm 1.4 NAME = ourName;
66    
67     _logger.write(toString(), Logger.SYSINIT, "configured");
68 tdb 1.10
69 tdb 1.11 // Setup a PacketSorter
70 tdb 1.17 PacketSorter ps = new PacketSorter(queueMonitorInterval);
71 tdb 1.12 ps.start();
72 tdb 1.10
73 ajm 1.3 // ClientInterfaceServant start (for inbound data)
74 ajm 1.4 _logger.write(toString(), Logger.DEBUG, "starting servant for inbound data");
75 tdb 1.11 ClientInterfaceServant ciServant = new ClientInterfaceServant(ps);
76 ajm 1.4 _refman.bindToOrb(ciServant, "iscream.ClientInterface." + ClientInterfaceMain.NAME);
77 ajm 1.3
78 tdb 1.13 // Startup the TCPListener
79 tdb 1.17 TCPClientListener tcpClientListener = new TCPClientListener(listenPort, ps, queueMonitorInterval);
80 tdb 1.9 tcpClientListener.start();
81 tdb 1.16
82     // Startup the CORBA Listener
83     _logger.write(toString(), Logger.DEBUG, "starting servant for inbound clients");
84 tdb 1.17 CorbaClientListenerServant corbaServant = new CorbaClientListenerServant(ps, queueMonitorInterval);
85 tdb 1.16 // !!! verify this name is correct at some point !!!
86     _refman.bindToOrb(corbaServant, "iscream.ClientInterface.CorbaListener");
87 ajm 1.3
88 ajm 1.4 _logger.write(toString(), Logger.SYSINIT, "started");
89 ajm 1.3 }
90    
91 ajm 1.4 /**
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 ajm 1.5 NAME,
103 ajm 1.4 getClass().getName(),
104     REVISION);
105     }
106 ajm 1.3
107     //---PRIVATE METHODS---
108    
109     //---ACCESSOR/MUTATOR METHODS---
110    
111     //---ATTRIBUTES---
112 ajm 1.4
113     /**
114     * This holds a reference to the
115     * system logger that is being used.
116     */
117 ajm 1.18 private Logger _logger;
118 ajm 1.4
119     /**
120     * A reference to the reference manager in use
121     */
122 ajm 1.18 private ReferenceManager _refman;
123 ajm 1.4
124 ajm 1.3 //---STATIC ATTRIBUTES---
125    
126 ajm 1.4 /**
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     }