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/PacketSorter.java
(Generate patch)

Comparing projects/cms/source/server/uk/org/iscream/cms/server/clientinterface/PacketSorter.java (file contents):
Revision 1.11 by tdb, Thu Mar 1 17:29:46 2001 UTC vs.
Revision 1.14 by tdb, Tue Mar 13 02:19:44 2001 UTC

# Line 37 | Line 37 | class PacketSorter extends Thread {
37       * @param queueMonitorInterval The interval at which to monitor the Queue
38       */
39      public PacketSorter(int queueMonitorInterval) {
40 +        // set the Thread name
41 +        setName("clientinterface.PacketSorter");
42 +        
43          _queue = new Queue();
44          // startup a monitor on this queue, every minute
45          String queueName = _name + " PacketSorterQueue";
# Line 54 | Line 57 | class PacketSorter extends Thread {
57       * loop forever processing and sending data.
58       */
59      public void run() {
60 +        XMLPacketMaker xmlPacketMaker = new XMLPacketMaker();
61          int qID = _queue.getQueue();
62          while(true) {
63              // attempt to get some data from the Queue
# Line 68 | Line 72 | class PacketSorter extends Thread {
72              XMLPacket packet = null;
73              
74              try {
75 <                XMLPacketMaker xmlPacketMaker = new XMLPacketMaker(xml);
72 <                packet = xmlPacketMaker.createXMLPacket();
75 >                packet = xmlPacketMaker.createXMLPacket(xml);
76              } catch(InvalidXMLException e) {
77                  _logger.write(toString(), Logger.ERROR, "Invalid XML: "+e);
78                  // skip the rest of this loop iteration
# Line 128 | Line 131 | class PacketSorter extends Thread {
131       * @param dhQueue a Queue being used by the DataHandler that is registering
132       * @param hostList a semi-colon seperated list of hosts
133       */
134 <    public synchronized void register(Queue dhQueue, String hostList) {
134 >    public void register(Queue dhQueue, String hostList) {
135          // check to see if we want all hosts
136          if(hostList.equals("")) {
137 <            _allHostDataList.add(dhQueue);
137 >            synchronized(this) {
138 >                _allHostDataList.add(dhQueue);
139 >            }
140              _logger.write(toString(), Logger.SYSMSG, "registered DataHandler for all hosts");
141          }
142          else {
# Line 139 | Line 144 | class PacketSorter extends Thread {
144              StringTokenizer st = new StringTokenizer(hostList, ";");
145              while(st.hasMoreTokens()) {
146                  String host = st.nextToken();
147 <                // see if we already have a list in the map for this host
148 <                if(_hostMap.containsKey(host)) {
149 <                    // we do, so add to it
150 <                    List list = (List) _hostMap.get(host);
151 <                    list.add(dhQueue);
147 >                synchronized(this) {
148 >                    // see if we already have a list in the map for this host
149 >                    if(_hostMap.containsKey(host)) {
150 >                        // we do, so add to it
151 >                        List list = (List) _hostMap.get(host);
152 >                        list.add(dhQueue);
153 >                    }
154 >                    else {
155 >                        // we don't, so create a list and put it in the map
156 >                        LinkedList list = new LinkedList();
157 >                        list.add(dhQueue);
158 >                        _hostMap.put(host, list);
159 >                    }
160                  }
148                else {
149                    // we don't, so create a list and put it in the map
150                    LinkedList list = new LinkedList();
151                    list.add(dhQueue);
152                    _hostMap.put(host, list);
153                }
161              }
162              _logger.write(toString(), Logger.SYSMSG, "registered DataHandler for hosts: "+hostList);
163          }
164          // always add host to our complete host list
165 <        _allHostsList.add(dhQueue);
165 >        synchronized(this) {
166 >            _allHostsList.add(dhQueue);
167 >        }
168      }
169      
170      /**
# Line 169 | Line 178 | class PacketSorter extends Thread {
178       * @param dhQueue a Queue being used by the DataHandler that is deregistering
179       * @param hostList a semi-colon seperated list of hosts
180       */
181 <    public synchronized void deregister(Queue dhQueue, String hostList) {
181 >    public void deregister(Queue dhQueue, String hostList) {
182          // go through the list of hosts
183          if(hostList.equals("")) {
184 <            _allHostDataList.remove(dhQueue);
184 >            synchronized(this) {
185 >                _allHostDataList.remove(dhQueue);
186 >            }
187              _logger.write(toString(), Logger.SYSMSG, "deregistered DataHandler for all hosts");
188          }
189          else {
190              StringTokenizer st = new StringTokenizer(hostList, ";");
191              while(st.hasMoreTokens()) {
192                  String host = st.nextToken();
193 <                // this should in reality always be true, but best check
194 <                if(_hostMap.containsKey(host)) {
195 <                    // get the list and remove the host in question
196 <                    LinkedList list = (LinkedList) _hostMap.get(host);
197 <                    list.remove(dhQueue);
198 <                    // if the list is now empty, we might as well remove it
199 <                    if(list.size()==0) {
200 <                        _hostMap.remove(host);
193 >                synchronized(this) {
194 >                    // this should in reality always be true, but best check
195 >                    if(_hostMap.containsKey(host)) {
196 >                        // get the list and remove the host in question
197 >                        LinkedList list = (LinkedList) _hostMap.get(host);
198 >                        list.remove(dhQueue);
199 >                        // if the list is now empty, we might as well remove it
200 >                        if(list.size()==0) {
201 >                            _hostMap.remove(host);
202 >                        }
203                      }
204                  }
205              }
206              _logger.write(toString(), Logger.SYSMSG, "deregistered DataHandler for hosts: "+hostList);
207          }
208          // always remove host from our complete host list
209 <        _allHostsList.remove(dhQueue);
209 >        synchronized(this) {
210 >            _allHostsList.remove(dhQueue);
211 >        }
212      }
213      
214      /**

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines