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.9
Committed: Thu Nov 30 02:38:09 2000 UTC (23 years, 5 months ago) by ajm
Branch: MAIN
Branch point for: SERVER_PACKAGEBUILD
Changes since 1.8: +4 -4 lines
Log Message:
Changed package structure
uk.ac.ukc.iscream.refman and xml -> uk.ac.ukc.iscream.util

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