ch.qos.logback.core.net.server
Class ServerSocketListener<T extends Client>

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

public abstract class ServerSocketListener<T extends Client>
extends Object
implements ServerListener<T>

A ServerListener that accepts connections on a ServerSocket.

Author:
Carl Harris

Constructor Summary
ServerSocketListener(ServerSocket serverSocket)
          Constructs a new listener.
 
Method Summary
 T acceptClient()
          Accepts the next client that appears on this listener.
 void close()
          Closes any underlying Closeable resources associated with this listener.
protected abstract  T createClient(String id, Socket socket)
          Creates the client object for a new socket connection
 String toString()
          
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ServerSocketListener

public ServerSocketListener(ServerSocket serverSocket)
Constructs a new listener.

Parameters:
serverSocket - server socket delegate
Method Detail

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 ServerListener<T extends Client>
Specified by:
close in interface Closeable

toString

public String toString()

Overrides:
toString in class Object


Copyright © 2005-2014 QOS.ch. All Rights Reserved.