- All Implemented Interfaces:
- extends java.lang.Object
- implements java.lang.Runnable
Single threaded controller of the tunnel creation process, spanning all tunnel pools.
Essentially, this loops across the pools, sees which want to build tunnels, and fires
off the necessary activities if the load allows. If nothing wants to build any tunnels,
it waits for a short period before looping again (or until it is told that something
changed, such as a tunnel failed, new client started up, or tunnel creation was aborted).
Note that 10 minute tunnel expiration is hardcoded in here.
|Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public BuildExecutor(RouterContext ctx,
public void run()
- Specified by:
run in interface
public boolean isRunning()
void buildTunnel(TunnelPool pool,
public void buildComplete(PooledTunnelCreatorConfig cfg,
public boolean wasRecentlyBuilding(long replyId)
public void buildSuccessful(PooledTunnelCreatorConfig cfg)
public void repoll()
PooledTunnelCreatorConfig removeFromBuilding(long id)
- This returns the PTCC up to a minute after it 'expired', thus allowing us to
still use a tunnel if it was accepted, and to update peer stats.
This means that manager.buildComplete() could be called more than once, and
a build can be failed or successful after it was timed out,
which will affect the stats and profiles.
But that's ok. A peer that rejects slowly gets penalized twice, for example.
- ptcc or null
public int getInboundBuildQueueSize()