See: Description
| Interface | Description |
|---|---|
| ConnectionManager.PingNotifier |
The callback interface for a pong.
|
| MessageOutputStream.DataReceiver |
Interface for receiving data flushed from this stream.
|
| MessageOutputStream.WriteStatus |
Interface to detect status of an asynchronous write operation.
|
| TaskScheduler |
Coordinates what we do 'next'.
|
| Class | Description |
|---|---|
| Connection |
Maintain the state controlling a streaming connection between two destinations.
|
| ConnectionDataReceiver |
Receive data from the MessageOutputStream, build a packet,
and send it through a connection.
|
| ConnectionHandler |
Receive new connection attempts
Use a bounded queue to limit the damage from SYN floods,
router overload, or a slow client
|
| ConnectionManager |
Coordinate all of the connections for a single local destination.
|
| ConnectionOptions |
Define the current options for the con (and allow custom tweaking midstream)
TODO many of these are not per-connection options, and should be migrated
somewhere so they aren't copied for every connection
|
| ConnectionPacketHandler |
Receive a packet for a particular connection - placing the data onto the
queue, marking packets as acked, updating various fields, etc.
|
| ConnThrottler |
Count how often we have received an incoming connection
This offers basic DOS protection but is not a complete solution.
|
| I2PServerSocketFull |
Bridge to allow accepting new connections
|
| I2PSocketFull |
Bridge between the full streaming lib and the I2PSocket API
|
| I2PSocketManagerFull |
Centralize the coordination and multiplexing of the local client's streaming.
|
| I2PSocketOptionsImpl |
Define the configuration for streaming and verifying data on the socket.
|
| MessageHandler |
Receive raw information from the I2PSession and turn it into
Packets, if we can.
|
| MessageInputStream |
InputStream implementation that accepts messages arriving out of order
and presents the data in proper sequence for reading.
|
| MessageOutputStream |
An OutputStream implementation that buffers data and forwards it
to a
MessageOutputStream.DataReceiver in chunks upon buffer full or flush. |
| Packet |
This contains solely the data that goes out on the wire,
including the local and remote port which is embedded in
the I2CP overhead, not in the packet itself.
|
| PacketHandler |
Handles incoming packets by dispatching them to the appropriate connection,
server socket, or responding with a reset (RST) packet if no valid connection is found.
|
| PacketLocal |
This is the class used for outbound packets.
|
| PacketQueue |
Queue out packets to be sent through the session.
|
| PcapWriter |
Write a standard pcap file with a "TCP" packet that can be analyzed with
standard tools such as wireshark.
|
| RetransmissionTimer |
Per-destination timer
|
| SchedulerChooser |
Examine a connection's state and pick the right scheduler for it.
|
| SchedulerClosed |
Scheduler used for after both sides have had their close packets
ACKed, but the final timeout hasn't passed.
|
| SchedulerClosing |
Scheduler used for after both SYNs have been ACKed and both sides
have closed the stream, but either we haven't ACKed their close or
they haven't ACKed ours.
|
| SchedulerConnectedBulk |
Scheduler used for after our SYN has been sent and ACKed but one
(or more) sides haven't closed the stream yet.
|
| SchedulerConnecting |
Scheduler used once we've sent our SYN but it hasn't been ACKed yet.
|
| SchedulerDead |
Scheduler used for after the final timeout has passed or the
connection was reset.
|
| SchedulerHardDisconnected |
Scheduler used after we've locally done a hard disconnect,
but the final timeout hasn't passed.
|
| SchedulerImpl |
Base scheduler
|
| SchedulerPreconnect |
Scheduler used for locally created connections where we have not yet
sent the initial SYN packet.
|
| SchedulerReceived |
Scheduler used after receiving an inbound connection but before
we have sent our own SYN.
|
| SimpleBandwidthEstimator |
A Westwood+ bandwidth estimator with
a first stage anti-aliasing low pass filter based on RTT,
and the time-varying Westwood filter based on inter-arrival time.
|
| StandardServerSocket |
Bridge to I2PServerSocket.
|
| StandardSocket |
Bridge to I2PSocket.
|
| TCBShare |
Share important TCP Control Block parameters across Connections
to the same remote peer.
|
| Exception | Description |
|---|---|
| TooManyStreamsException |
We attempted to have more open streams than we are willing to put up with
|
Implementation of a TCP-like (reliable, authenticated, in order) set of sockets for communicating over the IP-like (unreliable, unauthenticated, unordered) I2P messages.
This is the streaming implementation (moved for ticket #1135 to here). For the API (which you probably want), see ministreaming. Clients should not need to access anything in this package directly. Use the interfaces and factory in net.i2p.streaming.
Note that this class is split across two jars, streaming.jar and ministreaming.jar. The interfaces and some code are in ministreaming.jar, but the real work gets done in streaming.jar. Clients must have both jars in their classpath.
Most clients will require (only) streaming.jar, ministreaming.jar, and i2p.jar in their classpath to communicate with the router.