net.i2p.router.tunnel.pool

## Class TunnelPool

- java.lang.Object
- - net.i2p.router.tunnel.pool.TunnelPool

    public class TunnelPool
    extends Object

A group of tunnels for the router or a particular client, in a single direction.

### Constructor Summary

Constructors
Constructor and Description
`TunnelPool(RouterContext ctx, TunnelPoolManager mgr, TunnelPoolSettings settings, TunnelPeerSelector sel)`

### Method Summary

Methods
`(package private) void` `addTunnel(TunnelInfo info)` Add to the pool.
`(package private) void` `buildComplete(PooledTunnelCreatorConfig cfg)` Remove from the _inprogress list
`(package private) boolean` `buildFallback()`
`(package private) PooledTunnelCreatorConfig` `configureNewTunnel()`
`int` `countHowManyToBuild()` Gather the data to see how many tunnels to build, and then actually compute that value (delegated to the countHowManyToBuild function below)
`long` `getLifetimeProcessed()`
`(package private) TunnelPoolManager` `getManager()`
`TunnelPeerSelector` `getSelector()`
`TunnelPoolSettings` `getSettings()`
`TunnelInfo` `getTunnel(TunnelId gatewayId)`
`(package private) int` `getTunnelCount()` duplicate of size(), let's pick one
`boolean` `isAlive()`
`List` `listPending()` list of tunnelInfo instances of tunnels currently being built
`List<TunnelInfo>` `listTunnels()` Return a list of tunnels in the pool
`boolean` `needFallback()` Do we really need more fallbacks? Used to prevent a zillion of them
`(package private) void` `refreshLeaseSet()` noop for outbound
`(package private) void` `refreshSettings()`
`(package private) void` `removeTunnel(TunnelInfo info)` Remove from the pool.
`TunnelInfo` `selectTunnel()` Pull a random tunnel out of the pool.
`void` `setSettings(TunnelPoolSettings settings)`
`void` `shutdown()`
`int` `size()` duplicate of getTunnelCount(), let's pick one
`void` `startup()`
`String` `toString()`
`void` `tunnelFailed(PooledTunnelCreatorConfig cfg)` This may be called multiple times from TestJob
`(package private) void` `updateRate()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### TunnelPool

    public TunnelPool(RouterContext ctx,
              TunnelPoolManager mgr,
              TunnelPoolSettings settings,
              TunnelPeerSelector sel)

### Method Detail

#### startup

    public void startup()

#### shutdown

    public void shutdown()

#### getManager

    TunnelPoolManager getManager()

#### refreshSettings

    void refreshSettings()

#### selectTunnel

    public TunnelInfo selectTunnel()

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.

#### getTunnel

    public TunnelInfo getTunnel(TunnelId gatewayId)

#### listTunnels

    public List<TunnelInfo> listTunnels()

Return a list of tunnels in the pool

Returns:
  list of TunnelInfo objects

#### needFallback

    public boolean needFallback()

Do we really need more fallbacks? Used to prevent a zillion of them

#### listPending

    public List listPending()

list of tunnelInfo instances of tunnels currently being built

#### getTunnelCount

    int getTunnelCount()

duplicate of size(), let's pick one

#### getSettings

    public TunnelPoolSettings getSettings()

#### setSettings

    public void setSettings(TunnelPoolSettings settings)

#### getSelector

    public TunnelPeerSelector getSelector()

#### isAlive

    public boolean isAlive()

#### size

    public int size()

duplicate of getTunnelCount(), let's pick one

#### addTunnel

    void addTunnel(TunnelInfo info)

Add to the pool.

#### removeTunnel

    void removeTunnel(TunnelInfo info)

Remove from the pool.

#### tunnelFailed

    public void tunnelFailed(PooledTunnelCreatorConfig cfg)

This may be called multiple times from TestJob

#### updateRate

    void updateRate()

#### refreshLeaseSet

    void refreshLeaseSet()

noop for outbound

#### buildFallback

    boolean buildFallback()

Returns:
  true if a fallback tunnel is built

#### getLifetimeProcessed

    public long getLifetimeProcessed()

#### countHowManyToBuild

    public int countHowManyToBuild()

Gather the data to see how many tunnels to build, and then actually compute that value (delegated to the countHowManyToBuild function below)

#### configureNewTunnel

    PooledTunnelCreatorConfig configureNewTunnel()

Returns:
  null on failure

#### buildComplete

    void buildComplete(PooledTunnelCreatorConfig cfg)

Remove from the _inprogress list

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`