ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/filter/FilterMain.java
(Generate patch)

Comparing projects/cms/source/server/uk/org/iscream/cms/server/filter/FilterMain.java (file contents):
Revision 1.31 by tdb, Tue May 29 17:02:35 2001 UTC vs.
Revision 1.32 by tdb, Tue Mar 19 16:37:28 2002 UTC

# Line 49 | Line 49 | public class FilterMain implements Component {
49          
50          ConfigurationProxy cp = ConfigurationProxy.getInstance();
51          
52 <        int UDPListenPort, TCPListenPort;
52 >        // which input methods do we need to activate?
53 >        // default to activating them
54 >        boolean activateTCPReader = true;
55 >        boolean activateUDPReader = true;
56 >        boolean activateCORBAReader = true;
57 >        
58 >        // check for TCP Reader
59          try {
60 <            UDPListenPort = Integer.parseInt(cp.getProperty(FilterMain.NAME, "Filter.UDPListenPort"));
61 <            TCPListenPort = Integer.parseInt(cp.getProperty(FilterMain.NAME, "Filter.TCPListenPort"));
60 >            int tcp = Integer.parseInt(cp.getProperty(FilterMain.NAME, "Filter.ActivateTCPReader"));
61 >            activateTCPReader = (tcp == 1);
62          } catch (PropertyNotFoundException e) {
63 <            throw new ComponentStartException("Unable to obtain requried configuration property for component: " + e);
63 >            activateTCPReader = false;
64 >        } catch (NumberFormatException e) {
65 >            activateTCPReader = false;
66          }
67 +        // check for UDP Reader
68 +        try {
69 +            int udp = Integer.parseInt(cp.getProperty(FilterMain.NAME, "Filter.ActivateUDPReader"));
70 +            activateUDPReader = (udp == 1);
71 +        } catch (PropertyNotFoundException e) {
72 +            activateUDPReader = false;
73 +        } catch (NumberFormatException e) {
74 +            activateUDPReader = false;
75 +        }
76 +        // check for CORBA Reader
77 +        try {
78 +            int corba = Integer.parseInt(cp.getProperty(FilterMain.NAME, "Filter.ActivateCORBAReader"));
79 +            activateCORBAReader = (corba == 1);
80 +        } catch (PropertyNotFoundException e) {
81 +            activateCORBAReader = false;
82 +        } catch (NumberFormatException e) {
83 +            activateCORBAReader = false;
84 +        }
85          
86 <        // setup a queue
86 >        // need to use the Queue later on
87          Queue queue;
88 <        // see if this Queue needs a size limit
89 <        try {
90 <            int queueSizeLimit = Integer.parseInt(cp.getProperty(FilterMain.NAME, "Queue.SizeLimit"));
91 <            String queueRemoveAlgorithm = cp.getProperty(FilterMain.NAME, "Queue.RemoveAlgorithm");
92 <            int algorithm = StringUtils.getStringPos(queueRemoveAlgorithm, Queue.algorithms);
93 <            if(algorithm != -1) {
94 <                _logger.write(toString(), Logger.DEBUG, "Starting Queue with size limit of "+queueSizeLimit+", using remove algorithm "+queueRemoveAlgorithm);
95 <                // we have valid values, so lets start it.
96 <                queue = new Queue(queueSizeLimit, algorithm);
97 <            }
98 <            else {
99 <                _logger.write(toString(), Logger.WARNING, "Bad Queue Algorithm configuration, not known: "+queueRemoveAlgorithm);
88 >        
89 >        // there's little point starting a Queue and a FilterThread
90 >        // if nothing is going to be giving us any data
91 >        if(activateTCPReader || activateUDPReader || activateCORBAReader) {
92 >            // see if this Queue needs a size limit
93 >            try {
94 >                int queueSizeLimit = Integer.parseInt(cp.getProperty(FilterMain.NAME, "Queue.SizeLimit"));
95 >                String queueRemoveAlgorithm = cp.getProperty(FilterMain.NAME, "Queue.RemoveAlgorithm");
96 >                int algorithm = StringUtils.getStringPos(queueRemoveAlgorithm, Queue.algorithms);
97 >                if(algorithm != -1) {
98 >                    _logger.write(toString(), Logger.DEBUG, "Starting Queue with size limit of "+queueSizeLimit+", using remove algorithm "+queueRemoveAlgorithm);
99 >                    // we have valid values, so lets start it.
100 >                    queue = new Queue(queueSizeLimit, algorithm);
101 >                }
102 >                else {
103 >                    _logger.write(toString(), Logger.WARNING, "Bad Queue Algorithm configuration, not known: "+queueRemoveAlgorithm);
104 >                    // just don't activate a limit
105 >                    queue = new Queue();
106 >                }
107 >                
108 >            } catch (PropertyNotFoundException e) {
109 >                _logger.write(toString(), Logger.DEBUG, "Optional config not set: "+e);
110                  // just don't activate a limit
111                  queue = new Queue();
112 +            } catch (NumberFormatException e) {
113 +                _logger.write(toString(), Logger.WARNING, "Bad Queue SizeLimit configuration: "+e);
114 +                // just don't activate a limit
115 +                queue = new Queue();
116              }
117              
118 <        } catch (PropertyNotFoundException e) {
119 <            _logger.write(toString(), Logger.DEBUG, "Optional config not set: "+e);
120 <            // just don't activate a limit
121 <            queue = new Queue();
122 <        } catch (NumberFormatException e) {
123 <            _logger.write(toString(), Logger.WARNING, "Bad Queue SizeLimit configuration: "+e);
124 <            // just don't activate a limit
125 <            queue = new Queue();
118 >            // startup a monitor on this queue
119 >            try {
120 >                // try to get the interval, if this fails, we won't start up the monitor
121 >                int queueMonitorInterval = Integer.parseInt(cp.getProperty(FilterMain.NAME, "Queue.MonitorInterval"));
122 >                String queueName = NAME + " Filter";
123 >                queue.startMonitor(queueMonitorInterval*1000, queueName);
124 >            } catch (PropertyNotFoundException e) {
125 >                _logger.write(toString(), Logger.WARNING, "failed to find queue monitor config, disabling. " + e);
126 >            }
127 >            
128 >            // Start a filter thread
129 >            _logger.write(toString(), Logger.SYSINIT, "starting Filter Thread / Queue consumer");
130 >            FilterThread filterThread = new FilterThread(queue);
131 >            filterThread.start();
132          }
133 +        else {
134 +            // it's pointless carrying on really...
135 +            throw new ComponentStartException("Can't start Filter without any inbound data feeds");            
136 +        }
137          
138 <        // startup a monitor on this queue
139 <        try {
140 <            // try to get the interval, if this fails, we won't start up the monitor
141 <            int queueMonitorInterval = Integer.parseInt(cp.getProperty(FilterMain.NAME, "Queue.MonitorInterval"));
142 <            String queueName = NAME + " Filter";
143 <            queue.startMonitor(queueMonitorInterval*1000, queueName);
144 <        } catch (PropertyNotFoundException e) {
145 <            _logger.write(toString(), Logger.WARNING, "failed to find queue monitor config, disabling. " + e);
138 >        // the corba listener needs these to be set, so lets
139 >        // make them something obviously invalid initially
140 >        int TCPListenPort = -1;
141 >        int UDPListenPort = -1;
142 >        
143 >        // TCP Reader start (for heartbeats)
144 >        if(activateTCPReader) {
145 >            try {
146 >                // get the port number from the configuration
147 >                TCPListenPort = Integer.parseInt(cp.getProperty(FilterMain.NAME, "Filter.TCPListenPort"));
148 >                // start the TCPReader
149 >                _logger.write(toString(), Logger.SYSINIT, "starting Filter TCP listener");
150 >                TCPReader tcpReader = new TCPReader(TCPListenPort, queue);
151 >                tcpReader.start();
152 >            } catch (PropertyNotFoundException e) {
153 >                _logger.write(toString(), Logger.WARNING, "Unable to start TCPReader due to missing configuration: " + e);
154 >            } catch (NumberFormatException e) {
155 >                _logger.write(toString(), Logger.WARNING, "Unable to start TCPReader due to invalid configuration: " + e);
156 >            }
157          }
158          
159 <        // Start a filter thread
160 <        _logger.write(toString(), Logger.SYSINIT, "starting Filter Thread / Queue consumer");
161 <        FilterThread filterThread = new FilterThread(queue);
162 <        filterThread.start();
159 >        // UDP Reader start (for inbound host data)
160 >        if(activateUDPReader) {
161 >            try {
162 >                // get the port number from the configuration
163 >                UDPListenPort = Integer.parseInt(cp.getProperty(FilterMain.NAME, "Filter.UDPListenPort"));
164 >                // start the UDPReader
165 >                _logger.write(toString(), Logger.SYSINIT, "starting Filter UDP listener");
166 >                UDPReader udpReader = new UDPReader(UDPListenPort, queue);
167 >                udpReader.start();
168 >            } catch (PropertyNotFoundException e) {
169 >                _logger.write(toString(), Logger.WARNING, "Unable to start UDPReader due to missing configuration: " + e);
170 >            } catch (NumberFormatException e) {
171 >                _logger.write(toString(), Logger.WARNING, "Unable to start UDPReader due to invalid configuration: " + e);
172 >            }
173 >        }
174          
175          // FilterServant start (for inbound child filter data)
176 <        _logger.write(toString(), Logger.DEBUG, "starting Servant to listen for downstream filters");
177 <        FilterServant filterServant = new FilterServant(TCPListenPort, UDPListenPort, queue);
178 <        _refman.bindToOrb(filterServant, "iscream.Filter." + FilterMain.NAME);
179 <
180 <        // UDL Reader start (for inbound host data)
181 <        _logger.write(toString(), Logger.SYSINIT, "starting Filter UDP listener");
110 <        UDPReader udpReader = new UDPReader(UDPListenPort, queue);
111 <        udpReader.start();
112 <
113 <        // TCP Reader start (for heartbeats)
114 <        _logger.write(toString(), Logger.SYSINIT, "starting Filter TCP listener");
115 <        TCPReader tcpReader = new TCPReader(TCPListenPort, queue);
116 <        tcpReader.start();
176 >        if(activateCORBAReader) {
177 >            // start the FilterServant
178 >            _logger.write(toString(), Logger.SYSINIT, "starting Servant to listen for downstream filters");
179 >            FilterServant filterServant = new FilterServant(TCPListenPort, UDPListenPort, queue);
180 >            _refman.bindToOrb(filterServant, "iscream.Filter." + FilterMain.NAME);
181 >        }
182          
183          _logger.write(toString(), Logger.SYSINIT, "started");
184      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines