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

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