net.i2p.router.client
Class ClientListenerRunner

java.lang.Object
  extended by net.i2p.router.client.ClientListenerRunner
All Implemented Interfaces:
Runnable
Direct Known Subclasses:
SSLClientListenerRunner

 class ClientListenerRunner
extends Object
implements Runnable

Listen for connections on the specified port, and toss them onto the client manager's set of connections once they are established.

Author:
jrandom

Field Summary
protected  boolean _bindAllInterfaces
           
protected  RouterContext _context
           
protected  boolean _listening
           
protected  Log _log
           
protected  ClientManager _manager
           
protected  int _port
           
protected  boolean _running
           
protected  ServerSocket _socket
           
static String BIND_ALL_INTERFACES
           
protected static int CONNECT_TIMEOUT
          give the i2cp client 5 seconds to show that they're really i2cp clients
 
Constructor Summary
ClientListenerRunner(RouterContext context, ClientManager manager, int port)
           
 
Method Summary
protected  ServerSocket getServerSocket()
          Get a ServerSocket.
 boolean isListening()
           
 void run()
           
protected  void runConnection(Socket socket)
          Handle the connection by passing it off to a ClientConnectionRunner
 void runServer()
          Start up the socket listener, listens for connections, and fires those connections off via runConnection.
 void stopListening()
           
protected  boolean validate(Socket socket)
          Verify the first byte.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_log

protected final Log _log

_context

protected final RouterContext _context

_manager

protected final ClientManager _manager

_socket

protected ServerSocket _socket

_port

protected final int _port

_bindAllInterfaces

protected final boolean _bindAllInterfaces

_running

protected boolean _running

_listening

protected boolean _listening

BIND_ALL_INTERFACES

public static final String BIND_ALL_INTERFACES
See Also:
Constant Field Values

CONNECT_TIMEOUT

protected static final int CONNECT_TIMEOUT
give the i2cp client 5 seconds to show that they're really i2cp clients

See Also:
Constant Field Values
Constructor Detail

ClientListenerRunner

public ClientListenerRunner(RouterContext context,
                            ClientManager manager,
                            int port)
Method Detail

isListening

public boolean isListening()

getServerSocket

protected ServerSocket getServerSocket()
                                throws IOException
Get a ServerSocket. Split out so it can be overridden for SSL.

Throws:
IOException
Since:
0.8.3

runServer

public void runServer()
Start up the socket listener, listens for connections, and fires those connections off via runConnection. This only returns if the socket cannot be opened or there is a catastrophic failure.


validate

protected boolean validate(Socket socket)
Verify the first byte. The InternalSocket doesn't support SoTimeout, so use available() instead to prevent hanging.


runConnection

protected void runConnection(Socket socket)
Handle the connection by passing it off to a ClientConnectionRunner


stopListening

public void stopListening()

run

public void run()
Specified by:
run in interface Runnable