net.i2p.router.client

## Class SSLClientListenerRunner

- java.lang.Object
- - net.i2p.router.client.ClientListenerRunner
  - - net.i2p.router.client.SSLClientListenerRunner

- All Implemented Interfaces:
    Runnable

      class SSLClientListenerRunner
      extends ClientListenerRunner

  SSL version of ClientListenerRunner

- - ### Field Summary

    - ### Fields inherited from class net.i2p.router.client.ClientListenerRunner

      `_bindAllInterfaces, _context, _listening, _log, _manager, _port, _running, _socket, BIND_ALL_INTERFACES, CONNECT_TIMEOUT`

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected ServerSocket` | `getServerSocket()` Get a SSLServerSocket.
    `protected void` | `runServer()` Create (if necessary) and load the key store, then run.
    `protected boolean` | `validate(Socket socket)` Overridden because SSL handshake may need more time, and available() in super doesn't work.

    - ### Methods inherited from class net.i2p.router.client.ClientListenerRunner

      `isListening, run, runConnection, stopListening`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SSLClientListenerRunner

          public SSLClientListenerRunner(RouterContext context,
                                         ClientManager manager,
                                         int port)

  - ### Method Detail

    - #### getServerSocket

          protected ServerSocket getServerSocket()
                                          throws IOException

      Get a SSLServerSocket.
      Overrides:
        `getServerSocket` in class `ClientListenerRunner`
      Throws:
        `IOException`

    - #### runServer

          protected void runServer()

      Create (if necessary) and load the key store, then run.
      Overrides:
        `runServer` in class `ClientListenerRunner`

    - #### validate

          protected boolean validate(Socket socket)

      Overridden because SSL handshake may need more time, and available() in super doesn't work. The handshake doesn't start until a read().
      Overrides:
        `validate` in class `ClientListenerRunner`