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.44
Committed: Sun Aug 1 10:41:06 2004 UTC (19 years, 9 months ago) by tdb
Branch: MAIN
CVS Tags: HEAD
Changes since 1.43: +3 -3 lines
Log Message:
Catch a lot of old URL's and update them. Also remove a couple of old files
that aren't used.

File Contents

# Content
1 /*
2 * i-scream central monitoring system
3 * http://www.i-scream.org
4 * Copyright (C) 2000-2002 i-scream
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 */
20
21
22 //---PACKAGE DECLARATION---
23 package uk.org.iscream.cms.server.rootfilter;
24
25 //---IMPORTS---
26 import uk.org.iscream.cms.util.*;
27 import uk.org.iscream.cms.server.core.*;
28 import uk.org.iscream.cms.server.componentmanager.*;
29 import uk.org.iscream.cms.server.clientinterface.*;
30
31 /**
32 * The root filter is what all filters talk to
33 * Hosts cannot talk to this implementation of a filter.
34 * It provides hooks to all data interfaces for the system
35 * namely the client interface and the db interface.
36 * This is an i-scream component that starts the
37 * RootFilter services.
38 *
39 * @author $Author: tdb $
40 * @version $Id: RootFilter.java,v 1.43 2003/05/05 22:05:14 tdb Exp $
41 */
42 public class RootFilter implements Component {
43
44 //---FINAL ATTRIBUTES---
45
46 /**
47 * The current CVS revision of this class
48 */
49 public static final String REVISION = "$Revision: 1.43 $";
50
51 //---STATIC METHODS---
52
53 //---CONSTRUCTORS---
54
55 //---PUBLIC METHODS---
56
57 /**
58 * This starts the Root Filter for the system
59 */
60 public void start() throws ComponentStartException {
61 // get references to key objects
62 _logger = _refman.getLogger();
63
64 _logger.write(toString(), Logger.SYSINIT, "coming up");
65
66 ConfigurationProxy cp = ConfigurationProxy.getInstance();
67 String configName = "RootFilter";
68
69 // set the name of the root filter
70 try {
71 NAME = cp.getProperty(configName, "RootFilter.name");
72 } catch (PropertyNotFoundException e) {
73 NAME = null;
74 _logger.write(toString(), Logger.WARNING, "RootFilter name not set: "+e);
75 }
76
77 // setup a queue
78 Queue queue;
79 // see if this Queue needs a size limit
80 try {
81 int queueSizeLimit = Integer.parseInt(cp.getProperty(configName, "Queue.SizeLimit"));
82 String queueRemoveAlgorithm = cp.getProperty(configName, "Queue.RemoveAlgorithm");
83 int algorithm = StringUtils.getStringPos(queueRemoveAlgorithm, Queue.algorithms);
84 if(algorithm != -1) {
85 _logger.write(toString(), Logger.DEBUG, "Starting Queue with size limit of "+queueSizeLimit+", using remove algorithm "+queueRemoveAlgorithm);
86 // we have valid values, so lets start it.
87 queue = new Queue(queueSizeLimit, algorithm);
88 }
89 else {
90 _logger.write(toString(), Logger.WARNING, "Bad Queue Algorithm configuration, not known: "+queueRemoveAlgorithm);
91 // just don't activate a limit
92 queue = new Queue();
93 }
94
95 } catch (PropertyNotFoundException e) {
96 _logger.write(toString(), Logger.DEBUG, "Optional config not set: "+e);
97 // just don't activate a limit
98 queue = new Queue();
99 } catch (NumberFormatException e) {
100 _logger.write(toString(), Logger.WARNING, "Bad Queue SizeLimit configuration: "+e);
101 // just don't activate a limit
102 queue = new Queue();
103 }
104
105 // startup a monitor on this queue
106 try {
107 // try to get the interval, if this fails, we won't start up the monitor
108 int queueMonitorInterval = Integer.parseInt(cp.getProperty(configName, "Queue.MonitorInterval"));
109 String queueName = NAME + " RootFilter";
110 queue.startMonitor(queueMonitorInterval*1000, queueName);
111 } catch (PropertyNotFoundException e) {
112 _logger.write(toString(), Logger.WARNING, "failed to find queue monitor config, disabling. " + e);
113 }
114
115 // RootFilterServant start (for inbound child filter data)
116 _logger.write(toString(), Logger.DEBUG, "starting Root Filter");
117 RootFilterServant filterServant = new RootFilterServant(queue);
118 // bind to the naming service as a filter
119 _refman.bindToOrb(filterServant, "iscream.Filter\\." + RootFilter.NAME);
120
121 // Startup the CORBA Listener
122 _logger.write(toString(), Logger.DEBUG, "starting servant for inbound clients");
123 CorbaClientListenerServant corbaServant = new CorbaClientListenerServant(queue);
124 _refman.bindToOrb(corbaServant, "iscream.ClientInterface\\." + RootFilter.NAME);
125
126 _logger.write(toString(), Logger.SYSINIT, "started");
127
128 }
129
130 /**
131 * Does a dependency check. Used mainly at startup to
132 * see if the required dependencies (components) are up
133 * and running.
134 *
135 * @return a boolean value, true if the depdencies are satisfied
136 */
137 public boolean depCheck() {
138 org.omg.CORBA.Object obj;
139
140 // first we need to check the Configuration system is available
141 try {
142 // first check the ConfigurationManager is alive
143 obj = _refman.getCORBARef("iscream.ConfigurationManager");
144 } catch(ComponentCORBAException e) {
145 System.err.println(toString() + ": Dependency Failure: "+e);
146 return false;
147 }
148
149 // dependency check suceeded
150 return true;
151 }
152
153 /**
154 * Overrides the {@link java.lang.Object#toString() Object.toString()}
155 * method to provide clean logging (every class should have this).
156 *
157 * This uses the uk.org.iscream.cms.util.NameFormat class
158 * to format the toString()
159 *
160 * @return the name of this class and its CVS revision
161 */
162 public String toString() {
163 return FormatName.getName(
164 NAME,
165 getClass().getName(),
166 REVISION);
167 }
168
169 //---PRIVATE METHODS---
170
171 //---ACCESSOR/MUTATOR METHODS---
172
173 //---ATTRIBUTES---
174
175 /**
176 * This holds a reference to the
177 * system logger that is being used.
178 */
179 private Logger _logger;
180
181 /**
182 * A reference to the reference manager in use
183 */
184 private ReferenceManager _refman = ReferenceManager.getInstance();
185
186 //---STATIC ATTRIBUTES---
187
188 /**
189 * The friendly name for this component, used by
190 * all related classes.
191 * This is set from the configuration.
192 */
193 public static String NAME;
194
195 }