Class BuildExecutor

java.lang.Object
net.i2p.router.tunnel.pool.BuildExecutor
All Implemented Interfaces:
Runnable

class BuildExecutor extends Object implements 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. As of 0.8.11, inbound request handling is done in a separate thread.
  • Constructor Details

  • Method Details

    • restart

      public void restart()
      Since:
      0.9
    • shutdown

      public void shutdown()
      Cannot be restarted.
      Since:
      0.9
    • run

      public void run()
      Specified by:
      run in interface Runnable
    • isRunning

      public boolean isRunning()
    • buildTunnel

      void buildTunnel(PooledTunnelCreatorConfig cfg)
    • buildComplete

      public void buildComplete(PooledTunnelCreatorConfig cfg, BuildExecutor.Result result)
      This calls TunnelPool.buildComplete which calls TunnelPool.addTunnel() on success, and then we wake up the executor. On success, this also calls TunnelPoolManager to optionally start a test job, and queues an ExpireJob.
      Since:
      0.9.53 added result parameter
    • wasRecentlyBuilding

      public boolean wasRecentlyBuilding(long replyId)
    • repoll

      public void repoll()
    • removeFromBuilding

      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.
      Returns:
      ptcc or null
      Since:
      0.7.12