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]