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]