## Uses of Class
net.i2p.client.I2PSessionImpl

- Packages that use I2PSessionImpl
  Package | Description
  --- | ---
  net.i2p.client | Implements the base I2P SDK for developing applications that communicate through I2P.

- - ### Uses of I2PSessionImpl in net.i2p.client

    Subclasses of I2PSessionImpl in net.i2p.client
    Modifier and Type | Class and Description
    --- | ---
    `(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.
    `(package private) class` | `I2PSimpleSession` Create a new session for doing naming and bandwidth queries only.

    Methods in net.i2p.client with parameters of type I2PSessionImpl
    Modifier and Type | Method and Description
    --- | ---
    `void` | I2CPMessageProducer.`connect(I2PSessionImpl session)` Send all the messages that a client needs to send to a router to establish a new session.
    `void` | I2CPMessageProducer.`createLeaseSet(I2PSessionImpl session, LeaseSet leaseSet, SigningPrivateKey signingPriv, PrivateKey priv)` Create a new signed leaseSet in response to a request to do so and send it to the router
    `void` | I2CPMessageProducer.`disconnect(I2PSessionImpl session)` Send messages to the router destroying the session and disconnecting
    `void` | MessageStatusMessageHandler.`handleMessage(I2CPMessage message, I2PSessionImpl session)`
    `void` | MessagePayloadMessageHandler.`handleMessage(I2CPMessage message, I2PSessionImpl session)`
    `void` | I2CPMessageHandler.`handleMessage(I2CPMessage message, I2PSessionImpl session)`
    `void` | DestReplyMessageHandler.`handleMessage(I2CPMessage message, I2PSessionImpl session)`
    `void` | BWLimitsMessageHandler.`handleMessage(I2CPMessage message, I2PSessionImpl session)`
    `void` | SessionStatusMessageHandler.`handleMessage(I2CPMessage message, I2PSessionImpl session)`
    `void` | RequestLeaseSetMessageHandler.`handleMessage(I2CPMessage message, I2PSessionImpl session)`
    `void` | DisconnectMessageHandler.`handleMessage(I2CPMessage message, I2PSessionImpl session)`
    `void` | SetDateMessageHandler.`handleMessage(I2CPMessage message, I2PSessionImpl session)`
    `void` | I2CPMessageProducer.`reportAbuse(I2PSessionImpl session, int msgId, int severity)` Send an abuse message to the router
    `void` | I2CPMessageProducer.`sendMessage(I2PSessionImpl session, Destination dest, long nonce, byte[] payload, long expires, int flags)` Package up and send the payload to the router for delivery
    `void` | I2CPMessageProducer.`sendMessage(I2PSessionImpl session, Destination dest, long nonce, byte[] payload, SessionTag tag, SessionKey key, Set tags, SessionKey newKey, long expires)` Package up and send the payload to the router for delivery
    `void` | I2CPMessageProducer.`updateBandwidth(I2PSessionImpl session)` Update the bandwidth setting
    `void` | I2CPMessageProducer.`updateTunnels(I2PSessionImpl session, int tunnels)` Update number of tunnels

    Constructors in net.i2p.client with parameters of type I2PSessionImpl
    Constructor and Description
    `ClientWriterRunner(OutputStream out, I2PSessionImpl session)` starts the thread too
    `SessionIdleTimer(I2PAppContext context, I2PSessionImpl session, boolean reduce, boolean shutdown)` reduce, shutdown, or both must be true