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/UDPReader.java
Revision: 1.10
Committed: Wed Dec 13 13:36:46 2000 UTC (23 years, 5 months ago) by ajm
Branch: MAIN
Changes since 1.9: +7 -5 lines
Log Message:
componenterized the filter and tidied all child classes, no all conform to toString standard

File Contents

# User Rev Content
1 tdb 1.6 //---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 tdb 1.2 import uk.ac.ukc.iscream.core.*;
9     import uk.ac.ukc.iscream.filter.*;
10 ajm 1.9 import uk.ac.ukc.iscream.util.*;
11 pjm2 1.1
12 tdb 1.6 /**
13     * This class contains the main method to be run by
14     * the filter children. It harvests UDP traffic.
15     *
16 ajm 1.10 * @author $Author: ajm4 $
17     * @version $Id: UDPReader.java,v 1.9 2000/11/30 02:38:09 ajm4 Exp $
18 tdb 1.6 */
19 pjm2 1.1 public class UDPReader extends Thread{
20    
21 tdb 1.6 //---FINAL ATTRIBUTES---
22    
23     /**
24     * The current CVS revision of this class
25     */
26 ajm 1.10 public final String REVISION = "$Revision: 1.9 $";
27 tdb 1.6
28     //---STATIC METHODS---
29    
30     //---CONSTRUCTORS---
31    
32 ajm 1.10 /**
33     * It is normal to use this constructor in preference
34     * to any other in this class.
35     */
36 tdb 1.8 public UDPReader(int port, Filter parent){
37     _port = port;
38     _parent = parent;
39 pjm2 1.1 }
40    
41 tdb 1.6 //---PUBLIC METHODS---
42    
43 pjm2 1.1 public void run() {
44    
45     DatagramSocket socket = null;
46     try {
47 tdb 1.8 socket = new DatagramSocket(_port);
48 pjm2 1.1 }
49     catch (BindException e){
50 tdb 1.8 _logger.write(this.toString(), Logger.FATAL, "Could not start the UDPReader thread on port "+_port+" as this port was already in use.");
51 pjm2 1.1 return;
52     }
53     catch (Exception e){
54 tdb 1.8 _logger.write(this.toString(), Logger.FATAL, "Could not start the UDPReader thread on port "+_port+".");
55 pjm2 1.1 return;
56     }
57    
58 tdb 1.8 _logger.write(this.toString(), Logger.SYSMSG, "UDPReader thread ready and listening for UDP packets on port "+_port);
59 pjm2 1.1
60     byte[] buf;
61    
62     boolean running = true;
63     while (running){
64     try {
65 pjm2 1.3
66     // receive request and pass on to the FilterThread.
67 pjm2 1.1 buf = new byte[packetSizeLimit];
68     DatagramPacket packet = new DatagramPacket(buf, buf.length);
69     socket.receive(packet);
70 tdb 1.8 FilterThread t = new FilterThread(packet, _parent);
71 pjm2 1.3 t.start();
72    
73 pjm2 1.1 }
74     catch (IOException e) {
75 tdb 1.8 _logger.write(this.toString(), Logger.WARNING, "This UDPReader thread has been shut down as an exception occured: "+e);
76 pjm2 1.1 return;
77     }
78     }
79     socket.close();
80     }
81 tdb 1.6
82     /**
83     * Overrides the {@link java.lang.Object#toString() Object.toString()}
84     * method to provide clean logging (every class should have this).
85     *
86     * @return the name of this class and its CVS revision
87     */
88     public String toString() {
89     return this.getClass().getName() + "(" + REVISION.substring(11, REVISION.length() - 2) + ")";
90     }
91    
92     //---PRIVATE METHODS---
93    
94     //---ACCESSOR/MUTATOR METHODS---
95    
96     //---ATTRIBUTES---
97    
98 tdb 1.8 Logger _logger = ReferenceManager.getInstance().getLogger();
99     int _port;
100     Filter _parent;
101 tdb 1.2
102 pjm2 1.1 final int packetSizeLimit = 8192;
103 tdb 1.6
104     //---STATIC ATTRIBUTES---
105    
106 pjm2 1.1 }