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/FilterThread.java
Revision: 1.9
Committed: Wed Nov 29 21:27:39 2000 UTC (23 years, 5 months ago) by ajm
Branch: MAIN
Changes since 1.8: +17 -9 lines
Log Message:
Update for package move.
Fixed bug in constructors.

File Contents

# Content
1 //---PACKAGE DECLARATION---
2 package uk.ac.ukc.iscream.filter;
3
4 //---IMPORTS---
5 import java.io.*;
6 import java.net.*;
7 import java.util.*;
8 import uk.ac.ukc.iscream.core.*;
9 import uk.ac.ukc.iscream.filter.*;
10 import uk.ac.ukc.iscream.xml.*;
11
12 /**
13 * Handle an incoming UDP packet as a separate thread.
14 *
15 * @author $Author: tdb1 $
16 * @version $Id: FilterThread.java,v 1.8 2000/11/29 19:26:00 tdb1 Exp $
17 */
18 public class FilterThread extends Thread{
19
20 //---FINAL ATTRIBUTES---
21
22 /**
23 * The current CVS revision of this class
24 */
25 public final String REVISION = "$Revision: 1.8 $";
26
27 //---STATIC METHODS---
28
29 //---CONSTRUCTORS---
30
31 // Class constructor. Obtains the byte[] from a DatagramPacket.
32 public FilterThread(DatagramPacket packet, String name, Filter parent, Logger logger){
33 _name = name;
34 this.parent = parent;
35 this.rawPacket = packet.getData();
36 this.logger = logger;
37 logger.write(this.toString(), Logger.DEBUG, "created");
38
39 }
40
41 // Class constructor for passing XML Strings.
42 public FilterThread(String xml, String name, Filter parent, Logger logger){
43 _name = name;
44 this.logger = logger;
45 this.parent = parent;
46 this.rawPacket = xml.getBytes();
47 logger.write(this.toString(), Logger.DEBUG, "created");
48 }
49
50 //---PUBLIC METHODS---
51
52 public void run(){
53
54 // Get a string without any null characters in it.
55 String xml = new String(rawPacket);
56 if (xml.indexOf(0) != -1) {
57 xml = xml.substring(0, xml.indexOf(0));
58 }
59 else {
60 xml = xml.substring(0, xml.length());
61 }
62
63 // Use my XMLPacketMaker to make an XMLPacket object.
64 XMLPacketMaker xmlPacketMaker = new XMLPacketMaker(xml, logger);
65 XMLPacket packet = xmlPacketMaker.createXMLPacket();
66
67 logger.write(this.toString(), Logger.DEBUG, "got data, filtering and passing to parent - " + packet.printAll());
68
69 if (packet == null){
70 // A null XML packet was returned - don't pass it on.
71 logger.write(this.toString(), Logger.SYSMSG, "An XML UDP packet was sucessfully filtered from the system.");
72 return;
73 }
74
75 // Now do something with this XMLPacket!!!
76 // .... let's try this...
77 parent.receiveXML(xml);
78
79 }
80
81 /**
82 * Overrides the {@link java.lang.Object#toString() Object.toString()}
83 * method to provide clean logging (every class should have this).
84 *
85 * @return the name of this class and its CVS revision
86 */
87 public String toString() {
88 return this.getClass().getName() + "{" + _name + "}(" + REVISION.substring(11, REVISION.length() - 2) + ")";
89 }
90
91 //---PRIVATE METHODS---
92
93 //---ACCESSOR/MUTATOR METHODS---
94
95 //---ATTRIBUTES---
96
97 Filter parent;
98 byte[] rawPacket;
99 Logger logger;
100 String _name;
101
102 //---STATIC ATTRIBUTES---
103
104 }