Class AliasedTunnelPool


  • public class AliasedTunnelPool
    extends TunnelPool
    A tunnel pool with its own settings and Destination, but uses another pool for its tunnels.
    Since:
    0.9.21
    • Method Detail

      • startup

        void startup()
        Description copied from class: TunnelPool
        Warning, this may be called more than once (without an intervening shutdown()) if the tunnel is stopped and then restarted by the client manager with the same Destination (i.e. for servers or clients w/ persistent key, or restarting close-on-idle clients)
        Overrides:
        startup in class TunnelPool
      • selectTunnel

        TunnelInfo selectTunnel()
        Description copied from class: TunnelPool
        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.
        Overrides:
        selectTunnel in class TunnelPool
        Returns:
        null on failure, but it should always build and return a fallback
      • selectTunnel

        TunnelInfo selectTunnel​(Hash closestTo)
        Description copied from class: TunnelPool
        Return the tunnel from the pool that is XOR-closet to the target. By using this instead of the random selectTunnel(), we force some locality in OBEP-IBGW connections to minimize those connections network-wide. Does not check for backlogged next peer. Does not return an expired tunnel.
        Overrides:
        selectTunnel in class TunnelPool
        Returns:
        null on failure
      • listTunnels

        public List<TunnelInfo> listTunnels()
        Description copied from class: TunnelPool
        Return a list of tunnels in the pool
        Overrides:
        listTunnels in class TunnelPool
        Returns:
        A copy of the list of TunnelInfo objects
      • needFallback

        boolean needFallback()
        Description copied from class: TunnelPool
        Do we really need more fallbacks? Used to prevent a zillion of them. Does not check config, only call if config allows zero hop.
        Overrides:
        needFallback in class TunnelPool
      • isAlive

        public boolean isAlive()
        Description copied from class: TunnelPool
        Is this pool running AND either exploratory, or tracked by the client manager? A pool will be alive but not tracked after the client manager removes it but before all the tunnels have expired.
        Overrides:
        isAlive in class TunnelPool
      • size

        public int size()
        Description copied from class: TunnelPool
        duplicate of getTunnelCount(), let's pick one
        Overrides:
        size in class TunnelPool
      • tunnelFailed

        void tunnelFailed​(TunnelInfo cfg)
        Description copied from class: TunnelPool
        Remove the tunnel and blame all the peers (not necessarily equally). This may be called multiple times from TestJob.
        Overrides:
        tunnelFailed in class TunnelPool
      • tunnelFailed

        void tunnelFailed​(TunnelInfo cfg,
                          Hash blamePeer)
        Description copied from class: TunnelPool
        Remove the tunnel and blame only one peer. This may be called multiple times.
        Overrides:
        tunnelFailed in class TunnelPool
      • buildFallback

        boolean buildFallback()
        Description copied from class: TunnelPool
        This will build a fallback (zero-hop) tunnel ONLY if this pool is exploratory, or the settings allow it.
        Overrides:
        buildFallback in class TunnelPool
        Returns:
        true if a fallback tunnel is built
      • locked_buildNewLeaseSet

        protected LeaseSet locked_buildNewLeaseSet()
        Description copied from class: TunnelPool
        Build a leaseSet with the required tunnels that aren't about to expire. Caller must synchronize on _tunnels. The returned LeaseSet will be incomplete; it will not have the destination set and will not be signed. Only the leases will be included.
        Overrides:
        locked_buildNewLeaseSet in class TunnelPool
        Returns:
        null on failure
      • countHowManyToBuild

        int countHowManyToBuild()
        Description copied from class: TunnelPool
        Gather the data to see how many tunnels to build, and then actually compute that value (delegated to the countHowManyToBuild function below)
        Overrides:
        countHowManyToBuild in class TunnelPool
      • configureNewTunnel

        PooledTunnelCreatorConfig configureNewTunnel()
        Description copied from class: TunnelPool
        This only sets the peers and creation/expiration times in the configuration. For the crypto, see BuildRequestor and BuildMessageGenerator.
        Overrides:
        configureNewTunnel in class TunnelPool
        Returns:
        null on failure