# Package net.i2p.router.tunnel.pool

Tunnel pool management, creation, and peer selection for I2P's anonymous routing system.

See: Description

- Class Summary
  Class | Description
  --- | ---
  AliasedTunnelPool | A tunnel pool with its own settings and Destination, but uses another pool for its tunnels.
  BuildExecutor | Single threaded controller of the tunnel creation process, spanning all tunnel pools.
  BuildHandler | Handle the received tunnel build message requests and replies, including sending responses and updating tunnel lists.
  BuildMessageGenerator | Fill in the encrypted BuildRequestRecords in a TunnelBuildMessage
  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.
  BuildReplyHandler.Result | This contains the result of decrypting the build request or reply record, including the decrypted properties field, if present.
  BuildRequestor | Utility class for creating and dispatching tunnel build request messages.
  ClientPeerSelector | Pick peers randomly out of the fast pool, and put them into tunnels ordered by XOR distance from a random key.
  ConnectChecker | Tools to check transport compatibility.
  ExcluderBase | A Set of Hashes that automatically adds to the Set in the contains() check.
  ExpireJob | Handles tunnel expiration in two phases for graceful shutdown.
  ExploratoryPeerSelector | Pick peers randomly out of the not-failing pool, and put them into a tunnel ordered by XOR distance from a random key.
  ParticipatingThrottler | Count how often we have accepted a tunnel with the peer as the previous or next hop.
  PooledTunnelCreatorConfig | Data about a tunnel we created
  RequestThrottler | Throttles incoming tunnel requests earlier than ParticipatingThrottler, with higher limits and more frequent cleanup.
  TestJob | Repeatedly tests a single tunnel for its lifetime to ensure it remains functional.
  TunnelPeerSelector | Coordinate the selection of peers to go into a tunnel for one particular pool.
  TunnelPool | A group of tunnels for the router or a particular client, in a single direction.
  TunnelPoolManager | Manage all the exploratory and client tunnel pools.

- Enum Summary
  Enum | Description
  --- | ---
  BuildExecutor.Result | Build result enumeration.
  ParticipatingThrottler.Result | Result of throttling decision for tunnel participation requests.

## Package net.i2p.router.tunnel.pool Description

Tunnel pool management, creation, and peer selection for I2P's anonymous routing system.

This package provides:

- Tunnel creation and build message processing
- Peer selection algorithms for tunnel participants
- Inbound and outbound tunnel pool management
- Adaptive tunnel build strategies
- Build request throttling and acceptance policies
- Tunnel pool configuration and optimization

Manages the lifecycle of tunnel pools, handling build requests based on local statistics and network conditions. Implements intelligent peer selection to optimize tunnel performance and anonymity.