net.i2p.router.client

## Class QueuedClientConnectionRunner

- java.lang.Object
- - net.i2p.router.client.ClientConnectionRunner
  - - net.i2p.router.client.QueuedClientConnectionRunner

-      class QueuedClientConnectionRunner
      extends ClientConnectionRunner

  Zero-copy in-JVM. While super() starts both a reader and a writer thread, we only need a reader thread here.
  Since:
    0.8.3
  Author:
    zzz

- - ### Field Summary

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

      `_context, _reader`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `QueuedClientConnectionRunner(RouterContext context, ClientManager manager, I2CPMessageQueue queue)` Create a new runner with the given queues

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `(package private) void` | `doSend(I2CPMessage msg)` Actually send the I2CPMessage to the client.
    `void` | `startRunning()` Starts the reader thread.
    `(package private) void` | `stopRunning()` Calls super() to stop the reader, and sends a poison message to the client.
    `(package private) void` | `writeMessage(I2CPMessage msg)` In super(), doSend queues it to the writer thread and the writer thread calls writeMessage() to write to the output stream.

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

      `ackSendMessage, disconnectClient, disconnectClient, disconnected, distributeMessage, getConfig, getDestHash, getIsDead, getLeaseRequest, getLeaseSet, getNextMessageId, getPayload, getSessionId, getSessionKeyManager, isDead, leaseSetCreated, receiveMessage, removePayload, reportAbuse, requestLeaseSet, sessionEstablished, setLeaseRequest, setLeaseSet, setPayload, setSessionId, updateMessageDeliveryStatus`

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

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

- - ### Constructor Detail

    - #### QueuedClientConnectionRunner

          public QueuedClientConnectionRunner(RouterContext context,
                                      ClientManager manager,
                                      I2CPMessageQueue queue)

      Create a new runner with the given queues

  - ### Method Detail

    - #### startRunning

          public void startRunning()

      Starts the reader thread. Does not call super().
      Overrides:
        `startRunning` in class `ClientConnectionRunner`

    - #### stopRunning

          void stopRunning()

      Calls super() to stop the reader, and sends a poison message to the client.
      Overrides:
        `stopRunning` in class `ClientConnectionRunner`

    - #### writeMessage

          void writeMessage(I2CPMessage msg)

      In super(), doSend queues it to the writer thread and the writer thread calls writeMessage() to write to the output stream. Since we have no writer thread this shouldn't happen.
      Overrides:
        `writeMessage` in class `ClientConnectionRunner`

    - #### doSend

          void doSend(I2CPMessage msg)
                throws I2CPMessageException

      Actually send the I2CPMessage to the client. Nonblocking.
      Overrides:
        `doSend` in class `ClientConnectionRunner`
      Throws:
        `I2CPMessageException`