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.9 by tdb, Thu Mar 1 02:14:37 2001 UTC vs.
Revision 1.10 by tdb, Thu Mar 1 16:53:16 2001 UTC

# Line 42 | Line 42 | class PacketSorter extends Thread {
42          String queueName = _name + " PacketSorterQueue";
43          _queue.startMonitor(queueMonitorInterval*1000, queueName);
44          _hostMap = Collections.synchronizedMap(new HashMap());
45 +        _allHostDataList = Collections.synchronizedList(new LinkedList());
46          _allHostsList = Collections.synchronizedList(new LinkedList());
47          _logger.write(toString(), Logger.SYSINIT, "created");
48      }
# Line 64 | Line 65 | class PacketSorter extends Thread {
65                  _logger.write(toString(), Logger.ERROR, "Queue failure: "+e);
66              }
67              
68 <            // find out which host this packet is actually for
68 <            XMLPacketMaker xmlPacketMaker = new XMLPacketMaker(xml);
69 <            XMLPacket packet = xmlPacketMaker.createXMLPacket();
68 >            XMLPacket packet = null;
69              
70 +            try {
71 +                XMLPacketMaker xmlPacketMaker = new XMLPacketMaker(xml);
72 +                packet = xmlPacketMaker.createXMLPacket();
73 +            } catch(InvalidXMLException e) {
74 +                _logger.write(toString(), Logger.ERROR, "Invalid XML: "+e);
75 +                // skip the rest of this loop iteration
76 +                continue;
77 +            }
78 +            
79              String packetType = packet.getParam("packet.attributes.type");
80              // check if we need to send it regardless
81              if(packetType.equals("data") || packetType.equals("heartbeat")) {
# Line 85 | Line 93 | class PacketSorter extends Thread {
93                  
94                  // any handler in this list wants all packets, so send
95                  // it on to them regardless
96 <                Iterator i = _allHostsList.iterator();
96 >                Iterator i = _allHostDataList.iterator();
97                  while(i.hasNext()) {
98                      ((Queue) i.next()).add(xml);
99                  }
100              }
101              else {
102 <                // send to all hosts because it's a special packet
102 >                // always send this packet to all hosts, because it's
103 >                // "extra" data, not host data
104                  Iterator i = _allHostsList.iterator();
105                  while(i.hasNext()) {
106                      ((Queue) i.next()).add(xml);
# Line 113 | Line 122 | class PacketSorter extends Thread {
122       * @param dhQueue a Queue being used by the DataHandler that is registering
123       * @param hostList a semi-colon seperated list of hosts
124       */
125 <    public void register(Queue dhQueue, String hostList) {
125 >    public synchronized void register(Queue dhQueue, String hostList) {
126          // check to see if we want all hosts
127          if(hostList.equals("")) {
128 <            _allHostsList.add(dhQueue);
128 >            _allHostDataList.add(dhQueue);
129              _logger.write(toString(), Logger.SYSMSG, "registered DataHandler for all hosts");
130          }
131          else {
# Line 139 | Line 148 | class PacketSorter extends Thread {
148              }
149              _logger.write(toString(), Logger.SYSMSG, "registered DataHandler for hosts: "+hostList);
150          }
151 +        // always add host to our complete host list
152 +        _allHostsList.add(dhQueue);
153      }
154      
155      /**
# Line 152 | Line 163 | class PacketSorter extends Thread {
163       * @param dhQueue a Queue being used by the DataHandler that is deregistering
164       * @param hostList a semi-colon seperated list of hosts
165       */
166 <    public void deregister(Queue dhQueue, String hostList) {
166 >    public synchronized void deregister(Queue dhQueue, String hostList) {
167          // go through the list of hosts
168          if(hostList.equals("")) {
169 <            _allHostsList.remove(dhQueue);
169 >            _allHostDataList.remove(dhQueue);
170              _logger.write(toString(), Logger.SYSMSG, "deregistered DataHandler for all hosts");
171          }
172          else {
# Line 175 | Line 186 | class PacketSorter extends Thread {
186              }
187              _logger.write(toString(), Logger.SYSMSG, "deregistered DataHandler for hosts: "+hostList);
188          }
189 +        // always remove host from our complete host list
190 +        _allHostsList.remove(dhQueue);
191      }
192      
193      /**
# Line 241 | Line 254 | class PacketSorter extends Thread {
254      /**
255       * A list specifically for a Queue's associated with DataHandlers
256       * that want all host information.
257 +     */
258 +    private List _allHostDataList;
259 +    
260 +    /**
261 +     * A list of all hosts.
262       */
263      private List _allHostsList;
264      

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines