## 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
`TunnelPool(RouterContext ctx, TunnelPoolManager mgr, TunnelPoolSettings settings, TunnelPeerSelector sel)`

Method Summary
`(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`