psmith      2003/06/19 15:55:34

  Modified:    src/java/org/apache/log4j/net MulticastReceiver.java
                        XMLSocketReceiver.java UDPReceiver.java
  Log:
  When a receiver's activateOptions method is just about finished, we
  set it active.  Currently relying on internal handler threads to 
  set this active property can cause a delay such that the GUI
  redraws the tree, and shows it inactive, before the thread has had a
  chance to set the flag.  
  
  Once the internal threads have been started, it's safe to say the receiver
  is active.
  
  Revision  Changes    Path
  1.11      +1 -0      
jakarta-log4j-sandbox/src/java/org/apache/log4j/net/MulticastReceiver.java
  
  Index: MulticastReceiver.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/net/MulticastReceiver.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- MulticastReceiver.java    19 Jun 2003 14:26:41 -0000      1.10
  +++ MulticastReceiver.java    19 Jun 2003 22:55:34 -0000      1.11
  @@ -154,6 +154,7 @@
         new MulticastReceiverThread().start();
         handlerThread = new MulticastHandlerThread();
         handlerThread.start();
  +      setActive(true);
       } catch (IOException ioe) {
         ioe.printStackTrace();
       }
  
  
  
  1.3       +1 -0      
jakarta-log4j-sandbox/src/java/org/apache/log4j/net/XMLSocketReceiver.java
  
  Index: XMLSocketReceiver.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/net/XMLSocketReceiver.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XMLSocketReceiver.java    17 Jun 2003 07:19:59 -0000      1.2
  +++ XMLSocketReceiver.java    19 Jun 2003 22:55:34 -0000      1.3
  @@ -149,6 +149,7 @@
         Thread rThread = new Thread(this);
         rThread.setDaemon(true);
         rThread.start();
  +      setActive(true);
       }
     }
   
  
  
  
  1.12      +15 -4     
jakarta-log4j-sandbox/src/java/org/apache/log4j/net/UDPReceiver.java
  
  Index: UDPReceiver.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/net/UDPReceiver.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- UDPReceiver.java  19 Jun 2003 14:26:41 -0000      1.11
  +++ UDPReceiver.java  19 Jun 2003 22:55:34 -0000      1.12
  @@ -50,6 +50,7 @@
   package org.apache.log4j.net;
   
   import org.apache.log4j.Decoder;
  +import org.apache.log4j.helpers.LogLog;
   import org.apache.log4j.plugins.Receiver;
   import org.apache.log4j.spi.LoggingEvent;
   
  @@ -72,6 +73,8 @@
    *
    */
   public class UDPReceiver extends Receiver implements PortBased{
  +  private UDPReceiverThread receiverThread;
  +
     private static final int PACKET_LENGTH = 16384;
   
     //default to log4j xml decoder
  @@ -100,6 +103,8 @@
   
     public synchronized void shutdown() {
       isActive = false;
  +    handlerThread.interrupt();
  +    receiverThread.interrupt();
       socket.close();
     }
   
  @@ -130,7 +135,8 @@
   
       try {
         socket = new DatagramSocket(port);
  -      new UDPReceiverThread().start();
  +      receiverThread = new UDPReceiverThread();
  +      receiverThread.start();
          handlerThread = new UDPHandlerThread();
          handlerThread.start();
       } catch (IOException ioe) {
  @@ -154,7 +160,7 @@
       public synchronized void run() {
         ArrayList list2 = new ArrayList();
   
  -      while (isAlive()) {
  +      while (isAlive() && isActive()) {
           synchronized (list) {
             if (list.size() > 0) {
               list2.addAll(list);
  @@ -185,6 +191,9 @@
           }
         }
       }
  +    if(!isActive()){
  +      LogLog.debug(UDPReceiver.this.getName() + "'s handler thread is exiting 
because of shutdown");
  +    }
     }
     }
   
  @@ -199,18 +208,20 @@
         byte[] b = new byte[PACKET_LENGTH];
         DatagramPacket p = new DatagramPacket(b, b.length);
   
  -      while (isActive) {
  +      while (isActive()) {
           try {
             socket.receive(p);
   
             String data = new String(p.getData(), 0, p.getLength()).trim();
             handlerThread.append(data);
  -        } catch (SocketException se) {
  +        }
  +        catch (SocketException se) {
                //disconnected
           } catch (IOException ioe) {
             ioe.printStackTrace();
           }
         }
  +      LogLog.debug(UDPReceiver.this.getName() + "'s thread is ending.");
       }
     }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to