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.8
Committed: Thu Nov 30 02:00:55 2000 UTC (23 years, 5 months ago) by tdb
Branch: MAIN
Changes since 1.7: +16 -20 lines
Log Message:
Changed all classes so that references to the Logger and ConfigurationManager
are no longer passed around between classes. All of the classes now utilise
the new ReferenceManager, which makes life much easier.
Also tidied everything so that they all use the same conventions for attributes,
namely the _ prefix to the name.

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 tdb 1.8 import uk.ac.ukc.iscream.refman.*;
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 tdb 1.8 * @author $Author: ajm4 $
17     * @version $Id: UDPReader.java,v 1.7 2000/11/29 21:27:39 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 tdb 1.8 public final String REVISION = "$Revision: 1.7 $";
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 }