ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/experimental/server/XMLReader/UDPReader.java
(Generate patch)

Comparing experimental/server/XMLReader/UDPReader.java (file contents):
Revision 1.2 by pjm2, Fri Nov 17 12:16:39 2000 UTC vs.
Revision 1.8 by pjm2, Tue Nov 21 10:11:21 2000 UTC

# Line 3 | Line 3 | import java.net.*;
3   import java.util.*;
4  
5   // This class contains the main method to be run by
6 < // the filter children.  It harvests UDP traffic
6 > // the filter children.  It harvests UDP traffic.
7   //
8   //
9 < public class UDPReader {
9 > public class UDPReader extends Thread{
10  
11 <    public static void main(String[] args) throws IOException {
11 >    // It is normal to use this constructor in preference
12 >    // to any other in this class.
13 >    public UDPReader(int port, Logger logger){
14 >        this.logger = logger;
15 >        this.port = port;
16 >    }
17 >    
18 >    public UDPReader(Logger logger){
19 >        this(4589, logger);
20 >    }
21  
22 <        // default UDP listening port.
14 <        int port = 4589;
15 <        final int packetSizeLimit = 8192;
22 >    public void run() {
23  
24 <        // Allow the user to choose their own port number.
25 <        if (args.length == 1){
26 <            try {
20 <                port = new Integer(args[0]).intValue();
21 <            }
22 <            catch (Exception e){
23 <                // If something went wrong, use the default again.
24 <                port = 4589;
25 <            }
24 >        DatagramSocket socket = null;
25 >        try {
26 >            socket = new DatagramSocket(port);
27          }
28 +        catch (BindException e){
29 +            logger.write(this.toString(), Logger.SYSMSG, "Could not start the UDPReader thread on port "+port+" as this port was already in use.");
30 +            return;
31 +        }
32 +        catch (Exception e){
33 +            logger.write(this.toString(), Logger.SYSMSG, "Could not start the UDPReader thread on port "+port+".");
34 +            return;
35 +        }
36 +        
37 +        logger.write(this.toString(), Logger.SYSMSG, "UDPReader thread ready and listening for UDP packets on port "+port);
38  
39 <        DatagramSocket socket = new DatagramSocket(port);
40 <        System.out.println("UDPReader ready and listening for UDP packets on port "+port);
30 <
39 >        byte[] buf;
40 >        
41          boolean running = true;
42          while (running){
43              try {
44 <                byte[] buf = new byte[packetSizeLimit];
44 >                buf = new byte[packetSizeLimit];
45                  // receive request
46                  DatagramPacket packet = new DatagramPacket(buf, buf.length);
47                  socket.receive(packet);
48 <                UDPReaderThread thread = new UDPReaderThread(packet);
49 <                thread.run();
48 >                UDPReaderThread t = new UDPReaderThread();
49 >                t.run(packet);
50              }
51              catch (IOException e) {
52 <                System.out.println("An exception occured in the UDPReader!");
53 <                e.printStackTrace();
52 >                logger.write(this.toString(), Logger.SYSMSG, "The UDPReader thread has been shut down as an exception occured: "+e);
53 >                return;
54              }
55          }
56          socket.close();
57      }
58 +    
59 +    
60 +    Logger logger;
61 +    int port;
62 +    
63 +    final int packetSizeLimit = 8192;
64 +    
65   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines