# Uses of Package
net.i2p.router.tunnel

- Packages that use net.i2p.router.tunnel
  Package | Description
  --- | ---
  net.i2p.router | The I2P router application handles I2P network communication.
  net.i2p.router.tunnel | Core tunnel management, message processing, and encryption for I2P's anonymous routing system.
  net.i2p.router.tunnel.pool | Tunnel pool management, creation, and peer selection for I2P's anonymous routing system.

- Classes in net.i2p.router.tunnel used by net.i2p.router
  Class and Description
  HopConfig Defines the general configuration for a hop in a tunnel.
  TunnelDispatcher Handle the actual processing and forwarding of messages through the various tunnels.

- Classes in net.i2p.router.tunnel used by net.i2p.router.tunnel
  Class and Description
  BatchedPreprocessor Batching preprocessor that will briefly delay the sending of a message if it doesn't fill up a full tunnel message, in which case it queues up an additional flush task.
  DummyValidator IV validator that accepts all initialization vectors without validation.
  FragmentHandler.DefragmentedReceiver Receive messages out of the tunnel endpoint.
  HopConfig Defines the general configuration for a hop in a tunnel.
  HopProcessor Take a received tunnel message, verify that it isn't a duplicate, and translate it into what the next hop will want.
  InboundEndpointProcessor Receive the inbound tunnel message, removing all of the layers added by earlier hops to recover the preprocessed data sent by the gateway.
  IVValidator Provide a generic interface for IV validation which may be implemented through something as simple as a hashtable or more a complicated bloom filter.
  PendingGatewayMessage Stores all the state for an unsent or partially-sent message
  PumpedTunnelGateway This class represents a tunnel gateway with multiple hops that accepts messages, then coalesces and fragments them before sending them down the tunnel.
  TrivialPreprocessor Do the simplest thing possible for preprocessing - for each message available, turn it into the minimum number of fragmented preprocessed blocks, sending each of those out.
  TunnelCreatorConfig Coordinate the info that the tunnel creator keeps track of, including what peers are in the tunnel and what their configuration is See PooledTunnelCreatorConfig for the non-abstract class
  TunnelDispatcher.Location Location in the tunnel for RED logic
  TunnelGateway Serve as the gatekeeper for a tunnel, accepting messages, coalescing and/or fragmenting them before wrapping them up for tunnel delivery.
  TunnelGateway.DelayedFlush
  TunnelGateway.QueuePreprocessor Interface for preprocessing queued tunnel messages.
  TunnelGateway.Receiver Interface for receiving encrypted tunnel data.
  TunnelGateway.Sender Interface for sending preprocessed tunnel data.
  TunnelGatewayPumper TunnelGatewayPumper runs a pool of threads that process PumpedTunnelGateway instances which need messages pushed through preprocessing and sending.

- Classes in net.i2p.router.tunnel used by net.i2p.router.tunnel.pool
  Class and Description
  TunnelCreatorConfig Coordinate the info that the tunnel creator keeps track of, including what peers are in the tunnel and what their configuration is See PooledTunnelCreatorConfig for the non-abstract class