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]