# Package net.i2p.router.tunnel

- Interface Summary
  Interface | Description
  --- | ---
  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
  Class | 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.
  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.