## Uses of Interface
net.i2p.data.i2cp.I2CPMessageReader.I2CPMessageEventListener

- Packages that use I2CPMessageReader.I2CPMessageEventListener
  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.I2CPMessageEventListener in net.i2p.client.impl

    Classes in net.i2p.client.impl that implement I2CPMessageReader.I2CPMessageEventListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `I2PSessionImpl` Implementation of an I2P session running over TCP.
    `(package private) class` | `I2PSessionImpl2` Thread safe implementation of an I2P session running over TCP.
    `(package private) class` | `I2PSessionMuxedImpl` I2PSession with protocol and ports Streaming lib has been modified to send I2PSession.PROTO_STREAMING but still receives all.
    `class` | `I2PSimpleSession` Create a new session for doing naming and bandwidth queries only.
    `(package private) class` | `SubSession` An additional session using another session's connection.

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

    Fields in net.i2p.data.i2cp declared as I2CPMessageReader.I2CPMessageEventListener
    Modifier and Type | Field and Description
    --- | ---
    `protected I2CPMessageReader.I2CPMessageEventListener` | I2CPMessageReader.`_listener`

    Methods in net.i2p.data.i2cp that return I2CPMessageReader.I2CPMessageEventListener
    Modifier and Type | Method and Description
    --- | ---
    `I2CPMessageReader.I2CPMessageEventListener` | I2CPMessageReader.`getListener()`

    Methods in net.i2p.data.i2cp with parameters of type I2CPMessageReader.I2CPMessageEventListener
    Modifier and Type | Method and Description
    --- | ---
    `void` | I2CPMessageReader.`setListener(I2CPMessageReader.I2CPMessageEventListener lsnr)`

    Constructors in net.i2p.data.i2cp with parameters of type I2CPMessageReader.I2CPMessageEventListener
    Constructor and Description
    `I2CPMessageReader(I2CPMessageReader.I2CPMessageEventListener lsnr)` For internal extension only.
    `I2CPMessageReader(InputStream stream, I2CPMessageReader.I2CPMessageEventListener lsnr)`

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

    Constructors in net.i2p.internal with parameters of type I2CPMessageReader.I2CPMessageEventListener
    Constructor and Description
    `QueuedI2CPMessageReader(I2CPMessageQueue in, I2CPMessageReader.I2CPMessageEventListener lsnr)` Creates a new instance of this QueuedMessageReader and spawns a pumper thread.

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

    Classes in net.i2p.router.client that implement I2CPMessageReader.I2CPMessageEventListener
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `ClientMessageEventListener` Receive events from the client and handle them accordingly (updating the runner when necessary)

    Methods in net.i2p.router.client that return I2CPMessageReader.I2CPMessageEventListener
    Modifier and Type | Method and Description
    --- | ---
    `protected I2CPMessageReader.I2CPMessageEventListener` | ClientConnectionRunner.`createListener()` Allow override for testing