home *** CD-ROM | disk | FTP | other *** search
/ Late Night VRML 2.0 with Java CD-ROM / code.zip / Ch19 / filter / Filter.java < prev    next >
Encoding:
Java Source  |  1997-02-16  |  1.6 KB  |  85 lines

  1. // The Virtual Light Company 1996
  2. //
  3. // From Chapter 20: Late Night VRML 2.0 and java
  4. //
  5. // This is the Filtering server starter class.
  6.  
  7. package filter;
  8.  
  9. import java.net.*;
  10. import java.io.*;
  11. import filter.*;
  12.  
  13. public class Filter extends Thread
  14. {
  15.     private static final int BUFFER_LENGTH = 1024;
  16.     private int    _port;
  17.     private boolean        server_available = false;
  18.     private DatagramSocket    listen_socket = null;
  19.     private FilterManager    manager = null;
  20.     private UserServer    server;
  21.  
  22.     private ThreadGroup    thread_group;
  23.     
  24.     public Filter(int port, ThreadGroup tg, UserServer userver)
  25.     {
  26.         super(tg, "Filter Server Thread");
  27.  
  28.         thread_group = tg;
  29.  
  30.         _port = port;
  31.  
  32.         System.out.println("Starting Update Server on UDP port " + port);
  33.         try
  34.         {
  35.             listen_socket = new DatagramSocket(port);
  36.         }
  37.         catch(IOException e)
  38.         {
  39.             System.err.println("Unable to open Filter socket " + e.getMessage());
  40.             return;
  41.         }
  42.  
  43.         manager = new FilterManager();
  44.  
  45.         server = userver;
  46.  
  47.         server_available = true;
  48.     }
  49.  
  50.     public void run()
  51.     {
  52.         byte[]    buffer;
  53.         DatagramPacket packet;
  54.         FilterMessage a_filter;
  55.  
  56.         // if the server failed to start then exit and do nothing.
  57.         if(!server_available)
  58.             return;
  59.  
  60.         // tell the filter manager to start running
  61.         manager.start();
  62.  
  63.         // now process the input.
  64.         while(true)
  65.         {
  66.             buffer = new byte[BUFFER_LENGTH];
  67.             packet = new DatagramPacket(buffer, BUFFER_LENGTH);
  68.  
  69.             try
  70.             {
  71.                 listen_socket.receive(packet);
  72.                 Thread.yield();
  73.             }
  74.             catch(IOException e)
  75.             {
  76.                 System.err.println("packet error");
  77.             }
  78.  
  79.             a_filter = new FilterMessage(packet, thread_group, server);
  80.             a_filter.run();
  81.             manager.add(a_filter);
  82.         }
  83.     }
  84. }
  85.