## Package net.i2p.router.tunnel

Interface Summary
FragmentHandler.DefragmentedReceiver: Receive messages out of the tunnel endpoint.
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.
TunnelGateway.QueuePreprocessor
TunnelGateway.Receiver
TunnelGateway.Sender

Class Summary
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.
BatchedRouterPreprocessor: Honor the 'batchFrequency' tunnel pool setting or the 'router.batchFrequency' router config setting, and track fragmentation.
BloomFilterIVValidator: Manage the IV validation for all of the router's tunnels by way of a big decaying bloom filter.
BuildMessageGenerator
BuildMessageProcessor: Receive the build message at a certain hop, decrypt its encrypted record, read the enclosed tunnel request, decide how to reply, write the reply, encrypt the reply record, and return a TunnelBuildMessage to forward on to the next hop
BuildReplyHandler: Decrypt the layers of a tunnel build reply message, determining whether the individual hops agreed to participate in the tunnel, or if not, why not.
DummyValidator: accept everything
FlushTimer
FragmentedMessage: Gather fragments of I2NPMessages at a tunnel endpoint, making them available for reading when complete.
FragmentHandler: Handle fragments at the endpoint of a tunnel, peeling off fully completed I2NPMessages when they arrive, and dropping fragments if they take too long to arrive.
HashSetIVValidator: Deprecated. unused
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.
InboundGatewayProcessor: Override the hop processor to seed the message with a random IV.
InboundGatewayReceiver
InboundMessageDistributor: When a message arrives at the inbound tunnel endpoint, this distributor honors the instructions (safely)
InboundSender: Receive the preprocessed data for an inbound gateway, encrypt it, and forward it on to the first hop.
OutboundGatewayProcessor: Turn the preprocessed tunnel data into something that can be delivered to the first hop in the tunnel.
OutboundMessageDistributor: When a message arrives at the outbound tunnel endpoint, this distributor honors the instructions.
OutboundReceiver: Receive the outbound message after it has been preprocessed and encrypted, then forward it on to the first hop in the tunnel.
OutboundSender: Receive the preprocessed data for an outbound gateway, encrypt all of the layers, and forward it on to the first hop.
OutboundTunnelEndpoint: We are the end of an outbound tunnel that we did not create.
PumpedTunnelGateway: This is used for all gateways with more than zero hops.
RouterFragmentHandler: Minor extension to allow message history integration
ThrottledPumpedTunnelGateway: Same as PTG, but check to see if a message should be dropped before queueing it.
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.
TrivialRouterPreprocessor: Deprecated. unused
TunnelCreatorConfig: Coordinate the info that the tunnel creator keeps track of, including what peers are in the tunnel and what their configuration is
TunnelDispatcher: Handle the actual processing and forwarding of messages through the various tunnels.
TunnelGateway: Serve as the gatekeeper for a tunnel, accepting messages, coallescing and/or fragmenting them before wrapping them up for tunnel delivery.
TunnelGateway.Pending: Stores all the state for an unsent or partially-sent message
TunnelGatewayPumper: run through the tunnel gateways that have had messages added to them and push those messages through the preprocessing and sending process
TunnelGatewayZeroHop: Serve as the gatekeeper for a tunnel with no hops.
TunnelParticipant: Participate in a tunnel at a location other than the gateway or outbound endpoint.