ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/rootfilter/RootFilter.java
Revision: 1.18
Committed: Fri Jan 19 01:12:42 2001 UTC (23 years, 4 months ago) by tdb
Branch: MAIN
Changes since 1.17: +14 -2 lines
Log Message:
TEMPORARY: Added some temporary code to log the queue status. Messy,
and will definately need to be fixed.

File Contents

# Content
1 //---PACKAGE DECLARATION---
2 package uk.ac.ukc.iscream.rootfilter;
3
4 //---IMPORTS---
5 import uk.ac.ukc.iscream.util.*;
6 import uk.ac.ukc.iscream.core.*;
7 import uk.ac.ukc.iscream.componentmanager.*;
8 import uk.ac.ukc.iscream.clientinterface.*;
9
10 /**
11 * The root filter is what all filters talk to
12 * Hosts cannot talk to this implementation of a filter.
13 * It provides hooks to all data interfaces for the system
14 * namely the client interface and the db interface.
15 * This is an i-scream component that starts the
16 * RootFilter services.
17 *
18 * @author $Author: tdb1 $
19 * @version $Id: RootFilter.java,v 1.17 2001/01/18 23:20:28 tdb1 Exp $
20 */
21 public class RootFilter implements Component {
22
23 //---FINAL ATTRIBUTES---
24
25 /**
26 * The current CVS revision of this class
27 */
28 public static final String REVISION = "$Revision: 1.17 $";
29
30 //---STATIC METHODS---
31
32 //---CONSTRUCTORS---
33
34 //---PUBLIC METHODS---
35
36 /**
37 * This starts the Root Filter for the system
38 */
39 public void start() throws ComponentStartException {
40
41 _logger.write(toString(), Logger.SYSINIT, "coming up");
42
43 // configuration variables we require
44 String ourName = null;
45 String realInterface = null;
46 String dbInterface = null;
47
48 Configuration config = _refman.getCM().getConfiguration("RootFilter");
49 if (config == null) {
50 System.err.println("CRITICAL:Unable to obtain configuration" +
51 "\n Advise you check the i-scream log for more information.");
52 _logger.write(toString(), Logger.FATAL, "ERROR - unable to obtain configuration");
53 System.exit(1);
54 } else {
55 try {
56 ourName = config.getProperty("RootFilter.name");
57 realInterface = config.getProperty("RootFilter.realtimeInterfaceName");
58 dbInterface = config.getProperty("RootFilter.dbInterfaceName");
59 } catch (org.omg.CORBA.MARSHAL e) {
60 System.err.println ("CRITICAL:Unable to obtain required configuration property" +
61 "\n Advise you check the i-scream log for more information.");
62 _logger.write(toString(), Logger.FATAL, "ERROR - required configuration property not present");
63 System.exit(1);
64 }
65 }
66 // now we have the name of the Root Filter we set it
67 NAME = ourName;
68
69 _logger.write(toString(), Logger.SYSINIT, "configured");
70
71 ClientInterface ciReal = null, ciDB = null;
72 // get reference to the client interfaces - the real time one
73 if (realInterface != null) {
74 ciReal = ClientInterfaceHelper.narrow(_refman.getCORBARef("iscream.ClientInterface." + realInterface));
75 }
76 // get reference to the client interfaces - and the db one
77 if (dbInterface != null) {
78 ciDB = ClientInterfaceHelper.narrow(_refman.getCORBARef("iscream.ClientInterface." + dbInterface));
79 }
80
81 Queue queue = new Queue();
82
83 if (realInterface == null) {
84 _logger.write(toString(), Logger.DEBUG, "hooked to interfaces - " + dbInterface);
85 CIWrapper c = new CIWrapper(ciDB, queue);
86 c.start();
87 } else if (dbInterface == null) {
88 _logger.write(toString(), Logger.DEBUG, "hooked to interfaces - " + realInterface);
89 CIWrapper c = new CIWrapper(ciReal, queue);
90 c.start();
91 } else {
92 _logger.write(toString(), Logger.DEBUG, "hooked to interfaces - " + realInterface + " & " + dbInterface);
93 CIWrapper c = new CIWrapper(ciReal, queue);
94 c.start();
95 c = new CIWrapper(ciDB, queue);
96 c.start();
97 }
98
99 // RootFilterServant start (for inbound child filter data)
100 _logger.write(toString(), Logger.DEBUG, "starting Root Filter");
101 RootFilterServant filterServant = new RootFilterServant(queue);
102 // bind to the naming service as a filter
103 _refman.bindToOrb(filterServant, "iscream.Filter." + RootFilter.NAME);
104
105 _logger.write(toString(), Logger.SYSINIT, "started");
106
107 // !!!! TEMPORARY CODE !!!!
108 // Monitor the queue's status (queue 0 and 1 - big assumption!)
109 while(true) {
110 // wait 30 seconds
111 try { Thread.sleep(30000); } catch(Exception e) {}
112 int q0 = _queue.queueSize(0);
113 int q1 = _queue.queueSize(1);
114 int tot = _queue.elementCount();
115 String message = "Queue status - queue1: "+q1+" queue2: "+q2+" total: "+tot;
116 _logger.write(toString(), Logger.DEBUG, message);
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 holds a reference to the
144 * system logger that is being used.
145 */
146 private Logger _logger = ReferenceManager.getInstance().getLogger();
147
148 /**
149 * A reference to the reference manager in use
150 */
151 private ReferenceManager _refman = ReferenceManager.getInstance();
152
153 //---STATIC ATTRIBUTES---
154
155 /**
156 * The friendly name for this component, used by
157 * all related classes.
158 * This is set from the configuration.
159 */
160 public static String NAME;
161
162 }