psmith 2003/06/22 20:48:10
Modified: src/java/org/apache/log4j/net SocketReceiver.java
SocketNode.java
Log:
SocketReceivers and SocketNode's now fully support the
Pauseable interface.
Revision Changes Path
1.11 +32 -6
jakarta-log4j-sandbox/src/java/org/apache/log4j/net/SocketReceiver.java
Index: SocketReceiver.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/net/SocketReceiver.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- SocketReceiver.java 23 Jun 2003 02:54:43 -0000 1.10
+++ SocketReceiver.java 23 Jun 2003 03:48:10 -0000 1.11
@@ -53,6 +53,7 @@
import org.apache.log4j.plugins.Pauseable;
import org.apache.log4j.plugins.Receiver;
import org.apache.log4j.spi.LoggerRepository;
+import org.apache.log4j.spi.LoggingEvent;
import java.io.IOException;
@@ -60,6 +61,8 @@
import java.net.Socket;
import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Vector;
import javax.swing.event.EventListenerList;
@@ -81,6 +84,7 @@
*/
public class SocketReceiver extends Receiver implements Runnable, PortBased,
Pauseable {
+ private Map socketMap = new HashMap();
private boolean paused;
private boolean shutdown;
private Thread rThread;
@@ -168,7 +172,7 @@
* Does the actual shutting down by closing the server socket
* and any connected sockets that have been created.
*/
- private void doShutdown() {
+ private synchronized void doShutdown() {
active = false;
LogLog.debug(getName() + " doShutdown called");
@@ -202,7 +206,7 @@
/**
* Closes all the connected sockets in the List.
*/
- private void closeAllAcceptedSockets() {
+ private synchronized void closeAllAcceptedSockets() {
for (int x = 0; x < socketList.size(); x++) {
try {
((Socket) socketList.get(x)).close();
@@ -212,6 +216,7 @@
}
// clear member variables
+ socketMap.clear();
socketList.clear();
}
@@ -259,6 +264,7 @@
node.addSocketNodeEventListener(listeners[i]);
}
+ socketMap.put(socket, node);
new Thread(node).start();
socket = null;
}
@@ -301,7 +307,8 @@
for (Enumeration enum = socketList.elements(); enum.hasMoreElements();) {
Socket socket = (Socket) enum.nextElement();
- details.add(new SocketDetail(socket));
+ details.add(
+ new SocketDetail(socket, (SocketNode) socketMap.get(socket)));
}
return details;
@@ -378,13 +385,16 @@
paused = b;
}
- public static class SocketDetail implements AddressBased, PortBased {
+ public static class SocketDetail implements AddressBased, PortBased,
+ Pauseable {
private String address;
private int port;
+ private SocketNode socketNode;
- private SocketDetail(Socket socket) {
+ private SocketDetail(Socket socket, SocketNode socketNode) {
this.address = socket.getInetAddress().getHostName();
this.port = socket.getPort();
+ this.socketNode = socketNode;
}
public String getAddress() {
@@ -400,8 +410,24 @@
}
public boolean isActive() {
- // TODO allow a Socket to be active/inactive/paused etc.
return true;
}
+
+ public boolean isPaused() {
+ return socketNode.isPaused();
+ }
+
+ public void setPaused(boolean paused) {
+ socketNode.setPaused(paused);
+ }
}
+ /* (non-Javadoc)
+ * @see
org.apache.log4j.plugins.Receiver#doPost(org.apache.log4j.spi.LoggingEvent)
+ */
+ public void doPost(LoggingEvent event) {
+ if(!isPaused()){
+ super.doPost(event);
+ }
+ }
+
}
1.5 +31 -16
jakarta-log4j-sandbox/src/java/org/apache/log4j/net/SocketNode.java
Index: SocketNode.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/net/SocketNode.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- SocketNode.java 20 Jun 2003 05:26:37 -0000 1.4
+++ SocketNode.java 23 Jun 2003 03:48:10 -0000 1.5
@@ -50,6 +50,7 @@
package org.apache.log4j.net;
import org.apache.log4j.Logger;
+import org.apache.log4j.plugins.Pauseable;
import org.apache.log4j.plugins.Receiver;
import org.apache.log4j.spi.LoggerRepository;
import org.apache.log4j.spi.LoggingEvent;
@@ -80,8 +81,9 @@
@since 0.8.4
*/
-public class SocketNode implements Runnable {
+public class SocketNode implements Runnable, Pauseable {
static Logger logger = Logger.getLogger(SocketNode.class);
+ private boolean paused;
private Socket socket;
private LoggerRepository hierarchy;
private Receiver receiver;
@@ -169,22 +171,27 @@
event.setProperty("log4j.remoteSourceInfo", remoteInfo);
// if configured with a receiver, tell it to post the event
- if ((receiver != null)) {
- receiver.doPost(event);
- // else post it via the hierarchy
- } else {
- // get a logger from the hierarchy. The name of the logger
- // is taken to be the name contained in the event.
- remoteLogger = hierarchy.getLogger(event.getLoggerName());
-
- //event.logger = remoteLogger;
- // apply the logger-level filter
- if (
- event.getLevel().isGreaterOrEqual(
- remoteLogger.getEffectiveLevel())) {
- // finally log the event as if was generated locally
- remoteLogger.callAppenders(event);
+ if (!isPaused()) {
+ if ((receiver != null)) {
+ receiver.doPost(event);
+
+ // else post it via the hierarchy
+ } else {
+ // get a logger from the hierarchy. The name of the logger
+ // is taken to be the name contained in the event.
+ remoteLogger = hierarchy.getLogger(event.getLoggerName());
+
+ //event.logger = remoteLogger;
+ // apply the logger-level filter
+ if (event
+ .getLevel()
+ .isGreaterOrEqual(remoteLogger.getEffectiveLevel())) {
+ // finally log the event as if was generated locally
+ remoteLogger.callAppenders(event);
+ }
}
+ } else {
+ //we simply discard this event.
}
}
} catch (java.io.EOFException e) {
@@ -250,5 +257,13 @@
snel.socketOpened(remoteInfo);
}
}
+ }
+
+ public void setPaused(boolean paused) {
+ this.paused = paused;
+ }
+
+ public boolean isPaused() {
+ return this.paused;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]