Class ServerSocketListener<T extends Client>

java.lang.Object
ch.qos.logback.core.net.server.ServerSocketListener<T>
All Implemented Interfaces:
ServerListener<T>, Closeable, AutoCloseable

public abstract class ServerSocketListener<T extends Client> extends Object implements ServerListener<T>
A ServerListener that accepts connections on a ServerSocket.
Author:
Carl Harris
  • Constructor Details

  • Method Details

    • acceptClient

      public T acceptClient() throws IOException
      Accepts the next client that appears on this listener.

      An implementation of this method is expected to block the calling thread and not return until either a client appears or an exception occurs.

      Specified by:
      acceptClient in interface ServerListener<T extends Client>
      Returns:
      client object
      Throws:
      IOException
    • createClient

      protected abstract T createClient(String id, Socket socket) throws IOException
      Creates the client object for a new socket connection
      Parameters:
      id - identifier string for the client
      socket - client's socket connection
      Returns:
      client object
      Throws:
      IOException
    • close

      public void close()
      Closes any underlying Closeable resources associated with this listener.

      Note that (as described in Doug Lea's discussion about interrupting I/O operations in "Concurrent Programming in Java" - Addison-Wesley Professional, 2nd edition, 1999) this method is used to interrupt any blocked I/O operation in the client when the server is shutting down. The client implementation must anticipate this potential, and gracefully exit when the blocked I/O operation throws the relevant IOException subclass.

      Note also, that unlike Closeable.close() this method is not permitted to propagate any IOException that occurs when closing the underlying resource(s).

      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in interface ServerListener<T extends Client>
    • toString

      public String toString()
      Overrides:
      toString in class Object