## 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
`QueuedClientConnectionRunner(RouterContext context, ClientManager manager, I2CPMessageQueue queue)` Create a new runner with the given queues

Method Summary
`(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`