## Uses of Class
net.i2p.data.TunnelId

- Packages that use TunnelId
  Package | Description
  --- | ---
  net.i2p.data | These classes define the common data structures used by the various I2P protocols.
  net.i2p.data.i2cp | The Invisible Internet Client Protocol (I2CP) allows applications simplified access to I2P network without requiring them to deal with the issues involved with the Invisible Internet Network Protocol (I2NP).
  net.i2p.data.i2np | This package defines the low-level messages sent between routers, called Invisible Internet Network Protocol (I2NP).
  net.i2p.router | The I2P router application handles I2P network communication.
  net.i2p.router.networkdb | Network database management and coordination for the I2P distributed hash table.
  net.i2p.router.networkdb.kademlia | Kademlia DHT implementation and floodfill router functionality for I2P.
  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.

- - ### Uses of TunnelId in net.i2p.data

    Fields in net.i2p.data declared as TunnelId
    Modifier and Type | Field and Description
    --- | ---
    `protected TunnelId` | Lease.`_tunnelId`

    Methods in net.i2p.data that return TunnelId
    Modifier and Type | Method and Description
    --- | ---
    `TunnelId` | Lease.`getTunnelId()` Tunnel on the gateway to communicate with
    `TunnelId` | MetaLease.`getTunnelId()`

    Methods in net.i2p.data with parameters of type TunnelId
    Modifier and Type | Method and Description
    --- | ---
    `void` | Lease.`setTunnelId(TunnelId id)` Configure the tunnel on the gateway to communicate with
    `void` | MetaLease.`setTunnelId(TunnelId id)`

  - ### Uses of TunnelId in net.i2p.data.i2cp

    Methods in net.i2p.data.i2cp that return TunnelId
    Modifier and Type | Method and Description
    --- | ---
    `TunnelId` | RequestLeaseSetMessage.`getTunnelId(int endpoint)`

    Methods in net.i2p.data.i2cp with parameters of type TunnelId
    Modifier and Type | Method and Description
    --- | ---
    `void` | RequestLeaseSetMessage.`addEndpoint(Hash router, TunnelId tunnel)`

  - ### Uses of TunnelId in net.i2p.data.i2np

    Methods in net.i2p.data.i2np that return TunnelId
    Modifier and Type | Method and Description
    --- | ---
    `TunnelId` | DatabaseLookupMessage.`getReplyTunnel()` Contains the tunnel ID a reply should be sent to
    `TunnelId` | DatabaseStoreMessage.`getReplyTunnel()`
    `TunnelId` | DeliveryInstructions.`getTunnelId()` default null
    `TunnelId` | TunnelGatewayMessage.`getTunnelId()`
    `TunnelId` | TunnelDataMessage.`getTunnelIdObj()`

    Methods in net.i2p.data.i2np with parameters of type TunnelId
    Modifier and Type | Method and Description
    --- | ---
    `void` | DatabaseLookupMessage.`setReplyTunnel(TunnelId replyTunnel)`
    `void` | DatabaseStoreMessage.`setReplyTunnel(TunnelId id)`
    `void` | TunnelDataMessage.`setTunnelId(TunnelId id)` (correctly) Invalidates stored checksum
    `void` | DeliveryInstructions.`setTunnelId(TunnelId id)` required for TUNNEL
    `void` | TunnelGatewayMessage.`setTunnelId(TunnelId id)`

  - ### Uses of TunnelId in net.i2p.router

    Methods in net.i2p.router that return TunnelId
    Modifier and Type | Method and Description
    --- | ---
    `TunnelId` | TunnelInfo.`getReceiveTunnelId(int hop)` retrieve the tunnelId that the given hop receives messages on.
    `TunnelId` | TunnelInfo.`getSendTunnelId(int hop)` retrieve the tunnelId that the given hop sends messages on.

    Methods in net.i2p.router with parameters of type TunnelId
    Modifier and Type | Method and Description
    --- | ---
    `void` | MessageHistory.`droppedTunnelMessage(TunnelId id, long msgId, Date expiration, Hash from)` We don't know about the given tunnel, so we are dropping a message sent to us by the given router
    `void` | MessageHistory.`tunnelFailed(TunnelId tunnel)` The local router has detected a failure in the given tunnel
    `void` | MessageHistory.`tunnelRejected(Hash peer, TunnelId tunnel, Hash replyThrough, String reason)` The peer did not accept the tunnel join for the given reason
    `void` | MessageHistory.`tunnelRequestTimedOut(Hash peer, TunnelId tunnel)` The peer did not accept the tunnel join for the given reason (this may be because of a timeout or an explicit refusal).

  - ### Uses of TunnelId in net.i2p.router.networkdb

    Methods in net.i2p.router.networkdb with parameters of type TunnelId
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | HandleDatabaseLookupMessageJob.`sendClosest(Hash key, Set<Hash> routerHashes, Hash toPeer, TunnelId replyTunnel)`
    `protected void` | HandleDatabaseLookupMessageJob.`sendMessage(I2NPMessage message, Hash toPeer, TunnelId replyTunnel)`

  - ### Uses of TunnelId in net.i2p.router.networkdb.kademlia

    Methods in net.i2p.router.networkdb.kademlia with parameters of type TunnelId
    Modifier and Type | Method and Description
    --- | ---
    `protected I2NPMessage` | ExploreJob.`buildMessage(TunnelId replyTunnelId, Hash replyGateway, long expiration, RouterInfo peer)` Builds the database lookup message to send to a peer.
    `protected I2NPMessage` | SearchJob.`buildMessage(TunnelId replyTunnelId, Hash replyGateway, long expiration, RouterInfo peer)` Build the database search message
    `protected void` | HandleFloodfillDatabaseLookupMessageJob.`sendClosest(Hash key, Set<Hash> routerInfoSet, Hash toPeer, TunnelId replyTunnel)` We extend this here to send our routerInfo back as well, if we are not floodfill.
    `(package private) boolean` | LookupBanHammer.`shouldBan(Hash key, TunnelId id)` Records a lookup request from a requester identified by key and tunnel ID, and determines whether the requester should be banned based on recent activity.
    `(package private) boolean` | FloodfillNetworkDatabaseFacade.`shouldBanLookup(Hash from, TunnelId id)`
    `(package private) boolean` | LookupThrottler.`shouldThrottle(Hash key, TunnelId id)` increments and checks throttling
    `(package private) boolean` | FloodfillNetworkDatabaseFacade.`shouldThrottleLookup(Hash from, TunnelId id)` Increments and tests.

  - ### Uses of TunnelId in net.i2p.router.tunnel

    Fields in net.i2p.router.tunnel declared as TunnelId
    Modifier and Type | Field and Description
    --- | ---
    `protected TunnelId` | PendingGatewayMessage.`_toTunnel`

    Methods in net.i2p.router.tunnel that return TunnelId
    Modifier and Type | Method and Description
    --- | ---
    `TunnelId` | TunnelDispatcher.`getNewIBEPID()` Get a new random receive tunnel ID that isn't a duplicate
    `TunnelId` | TunnelDispatcher.`getNewIBZeroHopID()` Get a new random receive tunnel ID that isn't a duplicate (zero hop)
    `TunnelId` | TunnelDispatcher.`getNewOBGWID()` Get a new random send tunnel ID that isn't a duplicate
    `TunnelId` | HopConfig.`getReceiveTunnel()` What tunnel ID are we receiving on? (null if uninitialized)
    `TunnelId` | TunnelCreatorConfig.`getReceiveTunnelId(int hop)` retrieve the tunnelId that the given hop receives messages on.
    `TunnelId` | HopConfig.`getSendTunnel()` What is the next tunnel ID we are sending to? (null if endpoint)
    `TunnelId` | TunnelCreatorConfig.`getSendTunnelId(int hop)` retrieve the tunnelId that the given hop sends messages on.
    `TunnelId` | FragmentedMessage.`getTargetTunnel()`
    `TunnelId` | PendingGatewayMessage.`getToTunnel()` may be null

    Methods in net.i2p.router.tunnel with parameters of type TunnelId
    Modifier and Type | Method and Description
    --- | ---
    `void` | TunnelGatewayZeroHop.`add(I2NPMessage msg, Hash toRouter, TunnelId toTunnel)` Add a message to be sent down the tunnel (immediately forwarding it to the `InboundMessageDistributor` or `OutboundMessageDistributor`, as necessary).
    `void` | PumpedTunnelGateway.`add(I2NPMessage msg, Hash toRouter, TunnelId toTunnel)` Adds a message to be sent down the tunnel.
    `void` | ThrottledPumpedTunnelGateway.`add(I2NPMessage msg, Hash toRouter, TunnelId toTunnel)` Adds a message to the inbound gateway after a bandwidth-based drop check.
    `void` | TunnelGateway.`add(I2NPMessage msg, Hash toRouter, TunnelId toTunnel)` Add a message to be sent down the tunnel, either sending it now (perhaps coalesced with other pending messages) or after a brief pause (_flushFrequency).
    `void` | TunnelDispatcher.`dispatchOutbound(I2NPMessage msg, TunnelId outboundTunnel, Hash targetPeer)` Dispatch an outbound message through a tunnel
    `void` | TunnelDispatcher.`dispatchOutbound(I2NPMessage msg, TunnelId outboundTunnel, TunnelId targetTunnel, Hash targetPeer)`
    `void` | InboundMessageDistributor.`distribute(I2NPMessage msg, Hash target, TunnelId tunnel)`
    `void` | OutboundMessageDistributor.`distribute(I2NPMessage msg, Hash target, TunnelId tunnel)` Warning - as of 0.9.63, msg will be an UnknownI2NPMessage, and must be converted before handling locally.
    `boolean` | TunnelDispatcher.`hasOutboundGateway(TunnelId tid)`
    `boolean` | FragmentedMessage.`receive(byte[] payload, int offset, int length, boolean isLast, Hash toRouter, TunnelId toTunnel)` Receive the first fragment (#0) and related metadata.
    `void` | FragmentHandler.DefragmentedReceiver.`receiveComplete(I2NPMessage msg, Hash toRouter, TunnelId toTunnel)` Receive a fully formed I2NPMessage out of the tunnel
    `void` | HopConfig.`setReceiveTunnelId(TunnelId id)`
    `void` | HopConfig.`setSendTunnelId(TunnelId id)` Do not set for endpoint

    Constructors in net.i2p.router.tunnel with parameters of type TunnelId
    Constructor and Description
    `OutboundGatewayMessage(I2NPMessage message, Hash toRouter, TunnelId toTunnel)`
    `PendingGatewayMessage(I2NPMessage message, Hash toRouter, TunnelId toTunnel)`

  - ### Uses of TunnelId in net.i2p.router.tunnel.pool

    Methods in net.i2p.router.tunnel.pool that return TunnelId
    Modifier and Type | Method and Description
    --- | ---
    `TunnelId` | PooledTunnelCreatorConfig.`getPairedGW()` The ID of the gateway of the paired tunnel used to send/receive the build request

    Methods in net.i2p.router.tunnel.pool with parameters of type TunnelId
    Modifier and Type | Method and Description
    --- | ---
    `TunnelInfo` | AliasedTunnelPool.`getTunnel(TunnelId gatewayId)`
    `TunnelInfo` | TunnelPool.`getTunnel(TunnelId gatewayId)` Get a tunnel by its gateway tunnel ID.
    `void` | PooledTunnelCreatorConfig.`setPairedGW(TunnelId gw)` The ID of the gateway of the paired tunnel used to send/receive the build request