## Uses of Interface
net.i2p.client.I2PSession

Packages that use I2PSession
net.i2p.BOB: BOB, the Basic Open Bridge, allows TCP applications to talk over I2P.
net.i2p.client: Implements the base I2P SDK for developing applications that communicate through I2P.
net.i2p.client.datagram: Provides a standard way for reading and writing messages transferred over I2P so that the recipient has an authenticated mechanism to reply to it.
net.i2p.client.streaming: Implements a TCP-like (reliable, authenticated, in order) set of sockets for communicating over the IP-like (unreliable, unauthenticated, unordered) I2P messages.
net.i2p.data: These classes define the common data structures used by the various I2P protocols.
net.i2p.i2ptunnel
net.i2p.i2ptunnel.udp
net.i2p.sam

Uses of I2PSession in net.i2p.BOB

Methods in net.i2p.BOB with parameters of type I2PSession
`void` `UDPIOthread.disconnected(I2PSession session)` required by `I2PSessionListener` to notify of disconnect
`void` `UDPIOthread.errorOccurred(I2PSession session, String message, Throwable error)` required by `I2PSessionListener` to notify of error
`void` `UDPIOthread.messageAvailable(I2PSession session, int msgId, long size)`
`void` `UDPIOthread.reportAbuse(I2PSession session, int severity)` required by `I2PSessionListener` to notify of abuse

Constructors in net.i2p.BOB with parameters of type I2PSession
`UDPIOthread(NamedDB info, Log _log, Socket socket, I2PSession _session)` Constructor

Uses of I2PSession in net.i2p.client

Classes in net.i2p.client that implement I2PSession
`(package private) 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.
`(package private) class` `I2PSimpleSession` Create a new session for doing naming and bandwidth queries only.

Methods in net.i2p.client that return I2PSession
`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` `I2PClientImpl.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` `I2PSimpleClient.createSession(InputStream destKeyStream, Properties options)` Create a new session (though do not connect it yet)

Methods in net.i2p.client with parameters of type I2PSession
`void` `I2PSessionMuxedListener.disconnected(I2PSession session)` Notify the client that the session has been terminated.
`void` `I2PSessionDemultiplexer.disconnected(I2PSession session)`
`void` `I2PSessionListener.disconnected(I2PSession session)` Notify the client that the session has been terminated
`void` `I2PSessionMuxedListener.errorOccurred(I2PSession session, String message, Throwable error)` Notify the client that some error occurred.
`void` `I2PSessionDemultiplexer.errorOccurred(I2PSession session, String message, Throwable error)`
`void` `I2PSessionListener.errorOccurred(I2PSession session, String message, Throwable error)` Notify the client that some error occurred
`void` `I2PSessionMuxedListener.messageAvailable(I2PSession session, int msgId, long size)` Will be called only if you register via setSessionListener() or addSessionListener().
`void` `I2PSessionDemultiplexer.messageAvailable(I2PSession session, int msgId, long size)` unused
`void` `I2PSessionListener.messageAvailable(I2PSession session, int msgId, long size)` Instruct the client that the given session has received a message with size # of bytes.
`void` `I2PSessionMuxedListener.messageAvailable(I2PSession session, int msgId, long size, int proto, int fromport, int toport)` Instruct the client that the given session has received a message Will be called only if you register via addMuxedSessionListener().
`void` `I2PSessionDemultiplexer.messageAvailable(I2PSession session, int msgId, long size, int proto, int fromport, int toport)`
`void` `I2PSessionMuxedListener.reportAbuse(I2PSession session, int severity)` Instruct the client that the session specified seems to be under attack and that the client may wish to move its destination to another router.
`void` `I2PSessionDemultiplexer.reportAbuse(I2PSession session, int severity)`
`void` `I2PSessionListener.reportAbuse(I2PSession session, int severity)` Instruct the client that the session specified seems to be under attack and that the client may wish to move its destination to another router.

Uses of I2PSession in net.i2p.client.datagram

Methods in net.i2p.client.datagram with parameters of type I2PSession
`void` `I2PDatagramMaker.setI2PDatagramMaker(I2PSession session)`

Constructors in net.i2p.client.datagram with parameters of type I2PSession
`I2PDatagramMaker(I2PSession session)` Construct a new I2PDatagramMaker that will be able to create I2P repliable datagrams going to be sent through the specified I2PSession.

Uses of I2PSession in net.i2p.client.streaming

Methods in net.i2p.client.streaming that return I2PSession
`I2PSession` `Connection.getSession()`
`I2PSession` `I2PSocketManagerFull.getSession()`
`I2PSession` `ConnectionManager.getSession()`
`I2PSession` `I2PSocketManager.getSession()`
`I2PSession` `I2PSocketManagerImpl.getSession()` Deprecated.

Methods in net.i2p.client.streaming with parameters of type I2PSession
`void` `MessageHandler.disconnected(I2PSession session)` Notify the client that the session has been terminated
`void` `I2PSocketManagerImpl.disconnected(I2PSession session)` Deprecated.
`void` `MessageHandler.errorOccurred(I2PSession session, String message, Throwable error)` Notify the client that some error occurred
`void` `I2PSocketManagerImpl.errorOccurred(I2PSession session, String message, Throwable error)` Deprecated.
`void` `I2PSocketManagerFull.init(I2PAppContext context, I2PSession session, Properties opts, String name)`
`void` `I2PSocketManager.init(I2PAppContext context, I2PSession session, Properties opts, String name)`
`void` `I2PSocketManagerImpl.init(I2PAppContext context, I2PSession session, Properties opts, String name)` Deprecated.
`void` `MessageHandler.messageAvailable(I2PSession session, int msgId, long size)` Instruct the client that the given session has received a message with size # of bytes.
`void` `I2PSocketManagerImpl.messageAvailable(I2PSession session, int msgId, long size)` Deprecated.
`void` `MessageHandler.reportAbuse(I2PSession session, int severity)` Instruct the client that the session specified seems to be under attack and that the client may wish to move its destination to another router.
`void` `I2PSocketManagerImpl.reportAbuse(I2PSession session, int severity)` Deprecated.
`void` `I2PSocketManagerImpl.setSession(I2PSession session)` Deprecated.

Constructors in net.i2p.client.streaming with parameters of type I2PSession
`ConnectionManager(I2PAppContext context, I2PSession session, int maxConcurrent, ConnectionOptions defaultOptions)`
`I2PSocketManagerFull(I2PAppContext context, I2PSession session, Properties opts, String name)`
`PacketQueue(I2PAppContext context, I2PSession session, ConnectionManager mgr)`

Uses of I2PSession in net.i2p.data

Methods in net.i2p.data that return I2PSession
`I2PSession` `PrivateKeyFile.open()`
`I2PSession` `PrivateKeyFile.open(Properties opts)`

Uses of I2PSession in net.i2p.i2ptunnel

Methods in net.i2p.i2ptunnel that return types with arguments of type I2PSession
`(package private) List<I2PSession>` `I2PTunnel.getSessions()`

Methods in net.i2p.i2ptunnel with parameters of type I2PSession
`(package private) void` `TunnelControllerGroup.acquire(TunnelController controller, I2PSession session)` Note the fact that the controller is using the session so that it isn't destroyed prematurely.
`(package private) void` `I2PTunnel.addSession(I2PSession session)`
`void` `I2PTunnelTask.disconnected(I2PSession session)`
`void` `I2PTunnelTask.errorOccurred(I2PSession session, String message, Throwable error)`
`(package private) void` `TunnelControllerGroup.release(TunnelController controller, I2PSession session)` Note the fact that the controller is no longer using the session, and if no other controllers are using it, destroy the session.
`(package private) void` `I2PTunnel.removeSession(I2PSession session)`
`void` `I2PTunnelTask.reportAbuse(I2PSession session, int severity)`

Uses of I2PSession in net.i2p.i2ptunnel.udp

Fields in net.i2p.i2ptunnel.udp declared as I2PSession
`protected I2PSession` `I2PSink.sess`
`protected I2PSession` `I2PSource.sess`
`protected I2PSession` `I2PSinkAnywhere.sess`

Methods in net.i2p.i2ptunnel.udp with parameters of type I2PSession
`void` `I2PSource.Listener.disconnected(I2PSession arg0)`
`void` `I2PSource.Listener.errorOccurred(I2PSession arg0, String arg1, Throwable arg2)`
`void` `I2PSource.Listener.messageAvailable(I2PSession sess, int id, long size)`
`void` `I2PSource.Listener.reportAbuse(I2PSession arg0, int arg1)`

Constructors in net.i2p.i2ptunnel.udp with parameters of type I2PSession
`I2PSink(I2PSession sess, Destination dest)`
`I2PSink(I2PSession sess, Destination dest, boolean raw)`
`I2PSinkAnywhere(I2PSession sess)`
`I2PSinkAnywhere(I2PSession sess, boolean raw)`
`I2PSource(I2PSession sess)`
`I2PSource(I2PSession sess, boolean verify)`
`I2PSource(I2PSession sess, boolean verify, boolean raw)`

Uses of I2PSession in net.i2p.sam

Methods in net.i2p.sam that return I2PSession
`protected I2PSession` `SAMMessageSession.getI2PSession()` Get the I2PSession object used by the SAM message-based session.

Methods in net.i2p.sam with parameters of type I2PSession
`void` `SAMMessageSession.SAMMessageSessionHandler.disconnected(I2PSession session)`
`void` `SAMMessageSession.SAMMessageSessionHandler.errorOccurred(I2PSession session, String message, Throwable error)`
`void` `SAMMessageSession.SAMMessageSessionHandler.messageAvailable(I2PSession session, int msgId, long size)`
`void` `SAMMessageSession.SAMMessageSessionHandler.reportAbuse(I2PSession session, int severity)`