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

- Packages that use I2PSessionException
  Package | Description
  --- | ---
  net.i2p.client | Implements the base I2P SDK for developing applications that communicate through I2P.
  net.i2p.data | These classes define the common data structures used by the various I2P protocols.
  net.i2p.internal | Interface and classes for a router and client within the same JVM to directly pass I2CP messages using Queues instead of serialized messages over socket streams.
  net.i2p.router.client |
  net.i2p.sam |

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

    Methods in net.i2p.client that throw I2PSessionException
    Modifier and Type | Method and Description
    --- | ---
    `int[]` | I2PSessionImpl.`bandwidthLimits()` Blocking.
    `int[]` | I2PSession.`bandwidthLimits()` Get the current bandwidth limits.
    `void` | I2PSessionImpl.`connect()` Connect to the router and establish a session.
    `void` | I2PSession.`connect()` Actually connect the session and start receiving/sending messages
    `void` | I2PSimpleSession.`connect()` Connect to the router and establish a session.
    `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
    `I2PSession` | I2PClientImpl.`createSession(I2PAppContext context, InputStream destKeyStream, Properties options)` Create a new session (though do not connect it yet)
    `I2PSession` | I2PSimpleClient.`createSession(I2PAppContext context, Properties options)` Create a new session (though do not connect it yet)
    `I2PSession` | I2PSimpleClient.`createSession(InputStream destKeyStream, Properties options)` Create a new session (though do not connect it yet)
    `I2PSession` | I2PClient.`createSession(InputStream destKeyStream, Properties options)` Create a new client session for the Destination stored at the destKeyStream using the specified options to both connect to the router, to instruct the router how to handle the new session, and to configure the end to end encryption.
    `I2PSession` | I2PClientImpl.`createSession(InputStream destKeyStream, Properties options)` Create a new session (though do not connect it yet)
    `void` | I2PSession.`destroySession()` Tear down the session and release any resources.
    `void` | I2CPMessageProducer.`disconnect(I2PSessionImpl session)` Send messages to the router destroying the session and disconnecting
    `Destination` | I2PSessionImpl.`lookupDest(Hash h)` Blocking.
    `Destination` | I2PSession.`lookupDest(Hash h)` Lookup a Destination by Hash.
    `Destination` | I2PSessionImpl.`lookupDest(Hash h, long maxWait)` Blocking.
    `Destination` | I2PSession.`lookupDest(Hash h, long maxWait)` Blocking.
    `byte[]` | I2PSessionImpl.`receiveMessage(int msgId)` Pull the unencrypted data from the message that we've already prefetched and notified the user that its available.
    `byte[]` | I2PSession.`receiveMessage(int msgId)` Receive a message that the router has notified the client about, returning the payload.
    `byte[]` | I2PSessionImpl2.`receiveMessage(int msgId)` pull the unencrypted AND DECOMPRESSED data
    `void` | I2CPMessageProducer.`reportAbuse(I2PSessionImpl session, int msgId, int severity)` Send an abuse message to the router
    `void` | I2PSessionImpl.`reportAbuse(int msgId, int severity)` Report abuse with regards to the given messageId
    `void` | I2PSession.`reportAbuse(int msgId, int severity)` Instruct the router that the message received was abusive (including how abusive on a 1-100 scale) in the hopes the router can do something to minimize receiving abusive messages like that in the future.
    `protected boolean` | I2PSessionImpl2.`sendBestEffort(Destination dest, byte[] payload, long expires, int flags)` TODO - Don't need to save MessageState since actuallyWait is false...
    `protected boolean` | I2PSessionImpl2.`sendBestEffort(Destination dest, byte[] payload, SessionKey keyUsed, Set tagsSent, long expires)`
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload)` Send a new message to the given destination, containing the specified payload, returning true if the router feels confident that the message was delivered.
    `boolean` | I2PSessionMuxedImpl.`sendMessage(Destination dest, byte[] payload)`
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload)`
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, int offset, int size)`
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, int offset, int size)`
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, int proto, int fromport, int toport)` See I2PSessionMuxedImpl for proto/port details.
    `boolean` | I2PSessionMuxedImpl.`sendMessage(Destination dest, byte[] payload, int proto, int fromport, int toport)`
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, int proto, int fromport, int toport)`
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent)` End-to-End Crypto is disabled, tags and keys are ignored.
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent)`
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, int proto, int fromport, int toport)` See I2PSessionMuxedImpl for proto/port details.
    `boolean` | I2PSessionMuxedImpl.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, int proto, int fromport, int toport)`
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, int proto, int fromport, int toport)`
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expire)` End-to-End Crypto is disabled, tags and keys are ignored.
    `boolean` | I2PSessionMuxedImpl.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expires)`
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expires)`
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expire, int proto, int fromport, int toport)` See I2PSessionMuxedImpl for proto/port details.
    `boolean` | I2PSessionMuxedImpl.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expires, int proto, int fromPort, int toPort)`
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expire, int proto, int fromport, int toport)`
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expire, int proto, int fromport, int toport, int flags)` See I2PSessionMuxedImpl for proto/port details.
    `boolean` | I2PSessionMuxedImpl.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expires, int proto, int fromPort, int toPort, int flags)`
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expire, int proto, int fromport, int toport, int flags)`
    `boolean` | I2PSession.`sendMessage(Destination dest, byte[] payload, SessionKey keyUsed, Set tagsSent)` End-to-End Crypto is disabled, tags and keys are ignored! Like sendMessage above, except the key used and the tags sent are exposed to the application.
    `boolean` | I2PSessionImpl2.`sendMessage(Destination dest, byte[] payload, SessionKey keyUsed, Set tagsSent)`
    `(package private) void` | I2PSessionImpl.`sendMessage(I2CPMessage message)` Deliver an I2CP 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
    `protected boolean` | I2PSessionImpl2.`sendNoEffort(Destination dest, byte[] payload, long expires)` Same as sendBestEffort(), except we do not expect any MessageStatusMessage responses - not for accepted, or success, or failure.
    `void` | I2CPMessageProducer.`updateTunnels(I2PSessionImpl session, int tunnels)` Update number of tunnels

    Constructors in net.i2p.client that throw I2PSessionException
    Constructor and Description
    `I2PSessionImpl(I2PAppContext context, InputStream destKeyStream, Properties options)` Create a new session, reading the Destination, PrivateKey, and SigningPrivateKey from the destKeyStream, and using the specified options to connect to the router
    `I2PSessionImpl2(I2PAppContext ctx, InputStream destKeyStream, Properties options)` Create a new session, reading the Destination, PrivateKey, and SigningPrivateKey from the destKeyStream, and using the specified options to connect to the router
    `I2PSessionMuxedImpl(I2PAppContext ctx, InputStream destKeyStream, Properties options)`
    `I2PSimpleSession(I2PAppContext context, Properties options)` Create a new session for doing naming and bandwidth queries only.

  - ### Uses of I2PSessionException in net.i2p.data

    Methods in net.i2p.data that throw I2PSessionException
    Modifier and Type | Method and Description
    --- | ---
    `Destination` | PrivateKeyFile.`getDestination()` Also sets the local privKey and signingPrivKey
    `I2PSession` | PrivateKeyFile.`open()`
    `I2PSession` | PrivateKeyFile.`open(Properties opts)`

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

    Methods in net.i2p.internal that throw I2PSessionException
    Modifier and Type | Method and Description
    --- | ---
    `I2CPMessageQueue` | InternalClientManager.`connect()` Connect to the router, receiving a message queue to talk to the router with.

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

    Methods in net.i2p.router.client that throw I2PSessionException
    Modifier and Type | Method and Description
    --- | ---
    `I2CPMessageQueue` | ClientManagerFacadeImpl.`connect()` The InternalClientManager interface.
    `I2CPMessageQueue` | ClientManager.`internalConnect()` The InternalClientManager interface.

  - ### Uses of I2PSessionException in net.i2p.sam

    Methods in net.i2p.sam that throw I2PSessionException
    Modifier and Type | Method and Description
    --- | ---
    `(package private) SAMv3DatagramSession` | SAMv3Handler.`newSAMDatagramSession(String login)`
    `(package private) SAMv3RawSession` | SAMv3Handler.`newSAMRawSession(String login)`

    Constructors in net.i2p.sam that throw I2PSessionException
    Constructor and Description
    `SAMDatagramSession(InputStream destStream, Properties props, SAMDatagramReceiver recv)` Create a new SAM DATAGRAM session.
    `SAMDatagramSession(String dest, Properties props, SAMDatagramReceiver recv)` Create a new SAM DATAGRAM session.
    `SAMMessageSession.SAMMessageSessionHandler(InputStream destStream, Properties props)` Create a new SAM message-based session handler
    `SAMMessageSession(InputStream destStream, Properties props)` Initialize a new SAM message-based session.
    `SAMMessageSession(String dest, Properties props)` Initialize a new SAM message-based session.
    `SAMRawSession(InputStream destStream, Properties props, SAMRawReceiver recv)` Create a new SAM RAW session.
    `SAMRawSession(String dest, Properties props, SAMRawReceiver recv)` Create a new SAM RAW session.
    `SAMv3DatagramSession(String nick)` build a DatagramSession according to informations registered with the given nickname
    `SAMv3RawSession(String nick)` Build a Raw Datagram Session according to information registered with the given nickname