Package net.i2p.router.tunnel.pool
Class AliasedTunnelPool
java.lang.Object
net.i2p.router.tunnel.pool.TunnelPool
net.i2p.router.tunnel.pool.AliasedTunnelPool
A tunnel pool with its own settings and Destination,
but uses another pool for its tunnels.
- Since:
- 0.9.21
-
Field Summary
Fields inherited from class net.i2p.router.tunnel.pool.TunnelPool
_alive, _context, _log
-
Constructor Summary
ConstructorDescriptionAliasedTunnelPool
(RouterContext ctx, TunnelPoolManager mgr, TunnelPoolSettings settings, TunnelPool aliasOf) -
Method Summary
Modifier and TypeMethodDescriptionprotected void
addTunnel
(TunnelInfo info) Add to the pool.(package private) void
buildComplete
(PooledTunnelCreatorConfig cfg, BuildExecutor.Result result) Remove from the _inprogress list and call addTunnel() if result is SUCCESS.(package private) boolean
This will build a fallback (zero-hop) tunnel ONLY if this pool is exploratory, or the settings allow it.(package private) PooledTunnelCreatorConfig
This only sets the peers and creation/expiration times in the configuration.(package private) int
Gather the data to see how many tunnels to build, and then actually compute that value (delegated to the countHowManyToBuild function below)long
boolean
isAlive()
Is this pool running AND either exploratory, or tracked by the client manager? A pool will be alive but not tracked after the client manager removes it but before all the tunnels have expired.list of tunnelInfo instances of tunnels currently being builtReturn a list of tunnels in the poolprotected LeaseSet
Build a leaseSet with the required tunnels that aren't about to expire.(package private) boolean
Do we really need more fallbacks? Used to prevent a zillion of them.(package private) void
noop for outbound and exploratory(package private) void
removeTunnel
(TunnelInfo info) Remove from the pool.(package private) TunnelInfo
Pull a random tunnel out of the pool.(package private) TunnelInfo
selectTunnel
(Hash closestTo) Return the tunnel from the pool that is XOR-closet to the target.(package private) void
shutdown()
int
size()
duplicate of getTunnelCount(), let's pick one(package private) void
startup()
Warning, this may be called more than once (without an intervening shutdown()) if the tunnel is stopped and then restarted by the client manager with the same Destination (i.e.toString()
(package private) void
tunnelFailed
(TunnelInfo cfg) Remove the tunnel and blame all the peers (not necessarily equally).(package private) void
tunnelFailed
(TunnelInfo cfg, Hash blamePeer) Remove the tunnel and blame only one peer.Methods inherited from class net.i2p.router.tunnel.pool.TunnelPool
getConsecutiveBuildTimeouts, getRateName, getSettings, getTunnelCount, setSettings
-
Constructor Details
-
AliasedTunnelPool
AliasedTunnelPool(RouterContext ctx, TunnelPoolManager mgr, TunnelPoolSettings settings, TunnelPool aliasOf)
-
-
Method Details
-
startup
void startup()Description copied from class:TunnelPool
Warning, this may be called more than once (without an intervening shutdown()) if the tunnel is stopped and then restarted by the client manager with the same Destination (i.e. for servers or clients w/ persistent key, or restarting close-on-idle clients)- Overrides:
startup
in classTunnelPool
-
shutdown
void shutdown()- Overrides:
shutdown
in classTunnelPool
-
selectTunnel
TunnelInfo selectTunnel()Description copied from class:TunnelPool
Pull a random tunnel out of the pool. If there are none available but the pool is configured to allow 0hop tunnels, this builds a fake one and returns it.- Overrides:
selectTunnel
in classTunnelPool
- Returns:
- null on failure, but it should always build and return a fallback
-
selectTunnel
Description copied from class:TunnelPool
Return the tunnel from the pool that is XOR-closet to the target. By using this instead of the random selectTunnel(), we force some locality in OBEP-IBGW connections to minimize those connections network-wide. Does not check for backlogged next peer. Does not return an expired tunnel.- Overrides:
selectTunnel
in classTunnelPool
- Returns:
- null on failure
-
getTunnel
- Overrides:
getTunnel
in classTunnelPool
- Parameters:
gatewayId
- for inbound, the GW rcv tunnel ID; for outbound, the GW send tunnel ID.
-
listTunnels
Description copied from class:TunnelPool
Return a list of tunnels in the pool- Overrides:
listTunnels
in classTunnelPool
- Returns:
- A copy of the list of TunnelInfo objects
-
needFallback
boolean needFallback()Description copied from class:TunnelPool
Do we really need more fallbacks? Used to prevent a zillion of them. Does not check config, only call if config allows zero hop.- Overrides:
needFallback
in classTunnelPool
-
listPending
Description copied from class:TunnelPool
list of tunnelInfo instances of tunnels currently being built- Overrides:
listPending
in classTunnelPool
-
isAlive
public boolean isAlive()Description copied from class:TunnelPool
Is this pool running AND either exploratory, or tracked by the client manager? A pool will be alive but not tracked after the client manager removes it but before all the tunnels have expired.- Overrides:
isAlive
in classTunnelPool
-
size
public int size()Description copied from class:TunnelPool
duplicate of getTunnelCount(), let's pick one- Overrides:
size
in classTunnelPool
-
addTunnel
Description copied from class:TunnelPool
Add to the pool.- Overrides:
addTunnel
in classTunnelPool
-
removeTunnel
Description copied from class:TunnelPool
Remove from the pool.- Overrides:
removeTunnel
in classTunnelPool
-
tunnelFailed
Description copied from class:TunnelPool
Remove the tunnel and blame all the peers (not necessarily equally). This may be called multiple times from TestJob.- Overrides:
tunnelFailed
in classTunnelPool
-
tunnelFailed
Description copied from class:TunnelPool
Remove the tunnel and blame only one peer. This may be called multiple times.- Overrides:
tunnelFailed
in classTunnelPool
-
refreshLeaseSet
void refreshLeaseSet()Description copied from class:TunnelPool
noop for outbound and exploratory- Overrides:
refreshLeaseSet
in classTunnelPool
-
buildFallback
boolean buildFallback()Description copied from class:TunnelPool
This will build a fallback (zero-hop) tunnel ONLY if this pool is exploratory, or the settings allow it.- Overrides:
buildFallback
in classTunnelPool
- Returns:
- true if a fallback tunnel is built
-
locked_buildNewLeaseSet
Description copied from class:TunnelPool
Build a leaseSet with the required tunnels that aren't about to expire. Caller must synchronize on _tunnels. The returned LeaseSet will be incomplete; it will not have the destination set and will not be signed. Only the leases will be included.- Overrides:
locked_buildNewLeaseSet
in classTunnelPool
- Returns:
- null on failure
-
getLifetimeProcessed
public long getLifetimeProcessed()- Overrides:
getLifetimeProcessed
in classTunnelPool
-
countHowManyToBuild
int countHowManyToBuild()Description copied from class:TunnelPool
Gather the data to see how many tunnels to build, and then actually compute that value (delegated to the countHowManyToBuild function below)- Overrides:
countHowManyToBuild
in classTunnelPool
-
configureNewTunnel
PooledTunnelCreatorConfig configureNewTunnel()Description copied from class:TunnelPool
This only sets the peers and creation/expiration times in the configuration. For the crypto, see BuildRequestor and BuildMessageGenerator.- Overrides:
configureNewTunnel
in classTunnelPool
- Returns:
- null on failure
-
buildComplete
Description copied from class:TunnelPool
Remove from the _inprogress list and call addTunnel() if result is SUCCESS. Updates consecutive build timeout count.- Overrides:
buildComplete
in classTunnelPool
-
toString
- Overrides:
toString
in classTunnelPool
-