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]

Reply via email to