net.i2p.router.client

## Class ClientListenerRunner

- java.lang.Object
- - 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

Fields
`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

Constructors
Constructor and Description
`ClientListenerRunner(RouterContext context, ClientManager manager, int port)`

### Method Summary

Methods
`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`