net.i2p.client.impl

## Class ClientWriterRunner

- java.lang.Object
- - net.i2p.client.impl.ClientWriterRunner

- All Implemented Interfaces:
    Runnable

      class ClientWriterRunner
      extends Object
      implements Runnable

  Copied from net.i2p.router.client We need a single thread that writes so we don't have issues with the Piped Streams used in InternalSocket.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ClientWriterRunner(OutputStream out, I2PSessionImpl session)` As of 0.9.11 does not start the thread, caller must call startWriting()

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addMessage(I2CPMessage msg)` Add this message to the writer's queue.
    `void` | `run()`
    `void` | `startWriting()`
    `void` | `stopWriting()` No more messages - don't even try to send what we have

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

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

- - ### Constructor Detail

    - #### ClientWriterRunner

          public ClientWriterRunner(OutputStream out,
                                    I2PSessionImpl session)

      As of 0.9.11 does not start the thread, caller must call startWriting()

  - ### Method Detail

    - #### addMessage

          public void addMessage(I2CPMessage msg)
                          throws I2PSessionException

      Add this message to the writer's queue. Blocking if queue is full.
      Throws:
        `I2PSessionException` - if we wait too long or are interrupted

    - #### run

          public void run()

      Specified by:
        `run` in interface `Runnable`

    - #### startWriting

          public void startWriting()

    - #### stopWriting

          public void stopWriting()

      No more messages - don't even try to send what we have