net.i2p.router.tunnel.pool
Class TunnelPool

java.lang.Object
  extended by 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