java.lang.Object
net.i2p.util.SimpleTimer2.TimedEvent
net.i2p.router.tunnel.pool.TunnelPoolManager.ConditionalOutboundStartup
- All Implemented Interfaces:
Runnable
- Enclosing class:
TunnelPoolManager
Conditionally start the outbound pool after the inbound pool has at least one tunnel. Retries every 2s; after max attempts, starts unconditionally. This prevents "Destination not reachable (no LeaseSet found)" at startup.
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanSet to stop waiting early.private final HashThe client's destination.private final TunnelPoolManagerThe manager owning the pools.private intTries made so far.private final TunnelPoolThe inbound pool paired with it.private final intTries allowed before giving up.private final TunnelPoolThe outbound pool being waited on.Fields inherited from class SimpleTimer2.TimedEvent
_state, DEFAULT_FUZZModifier and TypeFieldDescriptionprotected SimpleTimer2.TimedEventStateState of the current event.protected static final intDefault fuzz threshold in milliseconds.Constructor Summary
ConstructorsConstructorDescriptionConditionalOutboundStartup(TunnelPool out, TunnelPool in, TunnelPoolManager mgr, RouterContext context, Hash dest) Schedule a startup that is abandoned unless the pools are ready in time.Method Summary
All MethodsModifier and TypeMethodDescriptionvoidCancel this pending startup, if it hasn't fired yet.voidStart the outbound pool when inbound has tunnels or attempts are exhausted.Methods inherited from class SimpleTimer2.TimedEvent
cancel, forceReschedule, reschedule, reschedule, run, schedule, setFuzz, setPool, toStringModifier and TypeMethodDescriptionbooleancancel()Cancel the timed event.voidforceReschedule(long timeoutMs) Always use the new time - ignores fuzz.voidreschedule(long timeoutMs) Use the earliest of the new time and the old time May be called from within timeReached(), but schedule() is better there.voidreschedule(long timeoutMs, boolean useEarliestTime) May be called from within timeReached(), but schedule() is better there.voidrun()voidschedule(long timeoutMs) Schedule this event.voidsetFuzz(int fuzz) Reschedule threshold in ms.voidsetPool(SimpleTimer2 pool) Timer pool for this event.toString()Timer summary for log messages.
Field Details
outbound
The outbound pool being waited on.inbound
The inbound pool paired with it._mgr
The manager owning the pools._dest
The client's destination.maxAttempts
private final int maxAttemptsTries allowed before giving up._cancelled
private volatile boolean _cancelledSet to stop waiting early.attempts
private int attemptsTries made so far.
Constructor Details
ConditionalOutboundStartup
public ConditionalOutboundStartup(TunnelPool out, TunnelPool in, TunnelPoolManager mgr, RouterContext context, Hash dest) Schedule a startup that is abandoned unless the pools are ready in time.- Parameters:
out- the outbound pool to startin- the inbound pool to wait formgr- the pool managercontext- the router contextdest- the client's destination hash
Method Details
cancelStartup
public void cancelStartup()Cancel this pending startup, if it hasn't fired yet.timeReached
public void timeReached()Start the outbound pool when inbound has tunnels or attempts are exhausted.- Specified by:
timeReachedin classSimpleTimer2.TimedEvent