Class SocketReceiver

All Implemented Interfaces:
Runnable, Pauseable, Plugin, Component, Thresholdable, NetworkBased, PortBased, org.apache.log4j.spi.OptionHandler

public class SocketReceiver extends Receiver implements Runnable, PortBased, Pauseable
SocketReceiver receives a remote logging event on a configured socket and "posts" it to a LoggerRepository as if the event was generated locally. This class is designed to receive events from the SocketAppender class (or classes that send compatible events).

Once the event has been "posted", it will be handled by the appenders currently configured in the LoggerRespository.

  • Field Details

    • socketMap

      private Map socketMap
      socket map.
    • paused

      private boolean paused
      Paused.
    • rThread

      private Thread rThread
      Thread.
    • port

      protected int port
      Port.
    • serverSocket

      private ServerSocket serverSocket
      Server socket.
    • socketList

      private Vector socketList
      Socket list.
    • ZONE

      public static final String ZONE
      The MulticastDNS zone advertised by a SocketReceiver
      See Also:
    • listener

      private SocketNodeEventListener listener
      Listener.
    • listenerList

      private List listenerList
      Listeners.
    • advertiseViaMulticastDNS

      private boolean advertiseViaMulticastDNS
    • zeroConf

      private org.apache.log4j.net.ZeroConfSupport zeroConf
  • Constructor Details

    • SocketReceiver

      public SocketReceiver()
      Create new instance.
    • SocketReceiver

      public SocketReceiver(int p)
      Create new instance.
      Parameters:
      p - port
    • SocketReceiver

      public SocketReceiver(int p, org.apache.log4j.spi.LoggerRepository repo)
      Create new instance.
      Parameters:
      p - port
      repo - logger repository
  • Method Details

    • getPort

      public int getPort()
      Description copied from interface: PortBased
      Returns the Port # that this net based thing is using.
      Specified by:
      getPort in interface PortBased
      Returns:
      int port number
    • setPort

      public void setPort(int p)
    • isEquivalent

      public boolean isEquivalent(Plugin testPlugin)
      Returns true if the receiver is the same class and they are configured for the same properties, and super class also considers them to be equivalent. This is used by PluginRegistry when determining if the a similarly configured receiver is being started.
      Specified by:
      isEquivalent in interface Plugin
      Overrides:
      isEquivalent in class PluginSkeleton
      Parameters:
      testPlugin - The plugin to test equivalency against.
      Returns:
      boolean True if the testPlugin is equivalent to this plugin.
    • activateOptions

      public void activateOptions()
      Starts the SocketReceiver with the current options.
      Specified by:
      activateOptions in interface org.apache.log4j.spi.OptionHandler
    • shutdown

      public void shutdown()
      Called when the receiver should be stopped. Closes the server socket and all of the open sockets.
      Specified by:
      shutdown in interface Plugin
    • doShutdown

      private void doShutdown()
      Does the actual shutting down by closing the server socket and any connected sockets that have been created.
    • closeServerSocket

      private void closeServerSocket()
      Closes the server socket, if created.
    • closeAllAcceptedSockets

      private void closeAllAcceptedSockets()
      Closes all the connected sockets in the List.
    • setActive

      protected void setActive(boolean b)
      Sets the flag to indicate if receiver is active or not.
      Parameters:
      b - new value
    • setAdvertiseViaMulticastDNS

      public void setAdvertiseViaMulticastDNS(boolean advertiseViaMulticastDNS)
    • isAdvertiseViaMulticastDNS

      public boolean isAdvertiseViaMulticastDNS()
    • run

      public void run()
      Loop, accepting new socket connections.
      Specified by:
      run in interface Runnable
    • getConnectedSocketDetails

      public Vector getConnectedSocketDetails()
      Returns a Vector of SocketDetail representing the IP/Domain name of the currently connected sockets that this receiver has been responsible for creating.
      Returns:
      Vector of SocketDetails
    • getListener

      public SocketNodeEventListener getListener()
      Deprecated.
      This receiver now supports multiple listeners
      Returns the currently configured SocketNodeEventListener that will be automatically set for each SocketNode created.
      Returns:
      SocketNodeEventListener currently configured
    • addSocketNodeEventListener

      public void addSocketNodeEventListener(SocketNodeEventListener l)
      Adds the listener to the list of listeners to be notified of the respective event.
      Parameters:
      l - the listener to add to the list
    • removeSocketNodeEventListener

      public void removeSocketNodeEventListener(SocketNodeEventListener l)
      Removes the registered Listener from this instances list of listeners. If the listener has not been registered, then invoking this method has no effect.
      Parameters:
      l - the SocketNodeEventListener to remove
    • setListener

      public void setListener(SocketNodeEventListener l)
      Deprecated.
      This receiver now supports multiple listeners and so this method simply removes the listener (if there already) and readds it to the list. The passed listener will also be returned via the getListener() method still, but this is also deprecated
      Sets the SocketNodeEventListener that will be used for each created SocketNode.
      Parameters:
      l - the listener to set on each creation of a SocketNode
    • isPaused

      public boolean isPaused()
      Get paused state.
      Specified by:
      isPaused in interface Pauseable
      Returns:
      paused state.
    • setPaused

      public void setPaused(boolean b)
      Set paused state.
      Specified by:
      setPaused in interface Pauseable
      Parameters:
      b - new value
    • doPost

      public void doPost(org.apache.log4j.spi.LoggingEvent event)
      Posts the logging event to a logger in the configured logger repository.
      Overrides:
      doPost in class Receiver
      Parameters:
      event - the log event to post to the local log4j environment.