## Uses of Class
net.i2p.data.i2cp.I2CPMessageReader

- Packages that use I2CPMessageReader
  Package | Description
  --- | ---
  net.i2p.client.impl | Internal implementation of the I2P client SDK, providing the client side of the I2CP protocol for applications communicating through I2P.
  net.i2p.data.i2cp | The Invisible Internet Client Protocol (I2CP) allows applications simplified access to I2P network without requiring them to deal with the issues involved with the Invisible Internet Network Protocol (I2NP).
  net.i2p.internal | Internal communication interfaces for router and client within same JVM, using queues instead of socket-based I2CP.
  net.i2p.router.client | Router-side implementation of the I2CP (I2P Client Protocol) interface for application integration.

- - ### Uses of I2CPMessageReader in net.i2p.client.impl

    Fields in net.i2p.client.impl declared as I2CPMessageReader
    Modifier and Type | Field and Description
    --- | ---
    `protected I2CPMessageReader` | I2PSessionImpl.`_reader` reader that always searches for messages

    Methods in net.i2p.client.impl with parameters of type I2CPMessageReader
    Modifier and Type | Method and Description
    --- | ---
    `void` | I2PSessionImpl.`disconnected(I2CPMessageReader reader)` The I2CPMessageEventListener callback.
    `void` | I2PSessionImpl.`messageReceived(I2CPMessageReader reader, I2CPMessage message)` The I2CPMessageEventListener callback.
    `void` | I2PSessionImpl.`readError(I2CPMessageReader reader, Exception error)` The I2CPMessageEventListener callback.

  - ### Uses of I2CPMessageReader in net.i2p.data.i2cp

    Methods in net.i2p.data.i2cp with parameters of type I2CPMessageReader
    Modifier and Type | Method and Description
    --- | ---
    `void` | I2CPMessageReader.I2CPMessageEventListener.`disconnected(I2CPMessageReader reader)` Notify the listener that the stream this reader was reading was closed.
    `void` | I2CPMessageReader.I2CPMessageEventListener.`messageReceived(I2CPMessageReader reader, I2CPMessage message)` Notify the listener that a message has been received from the given reader
    `void` | I2CPMessageReader.I2CPMessageEventListener.`readError(I2CPMessageReader reader, Exception error)` Notify the listener that an exception was thrown while reading from the given reader.

  - ### Uses of I2CPMessageReader in net.i2p.internal

    Subclasses of I2CPMessageReader in net.i2p.internal
    Modifier and Type | Class and Description
    --- | ---
    `class` | `QueuedI2CPMessageReader` Get messages off an In-JVM queue, zero-copy.

  - ### Uses of I2CPMessageReader in net.i2p.router.client

    Fields in net.i2p.router.client declared as I2CPMessageReader
    Modifier and Type | Field and Description
    --- | ---
    `protected I2CPMessageReader` | ClientConnectionRunner.`_reader` thingy that does stuff

    Methods in net.i2p.router.client with parameters of type I2CPMessageReader
    Modifier and Type | Method and Description
    --- | ---
    `void` | ClientMessageEventListener.`disconnected(I2CPMessageReader reader)`
    `void` | ClientMessageEventListener.`messageReceived(I2CPMessageReader reader, I2CPMessage message)` Handle an incoming message and dispatch it to the appropriate handler
    `void` | ClientMessageEventListener.`readError(I2CPMessageReader reader, Exception error)` Handle notification that there was an error