java.lang.Object
net.i2p.util.SimpleTimer2.TimedEvent
net.i2p.router.transport.TransportManager.OutboundMaintainerEvent
- All Implemented Interfaces:
Runnable
- Enclosing class:
TransportManager
Periodically ensures we have enough outbound connections to Fast peers.
The transport layer creates outbound connections on-demand when a message needs to be sent. However, in low-traffic scenarios or when the I2P+ pre-send check blocks sends to unconnected peers, outbound connections can dry up, causing tunnel build failures ("first hop unreachable").
This maintainer runs every 60 seconds, checks how many outbound connections we have to Fast/HiCap peers, and proactively establishes new ones if the count is below the threshold.
Field Summary
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
ConstructorsMethod Summary
All MethodsMethods 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.
Constructor Details
OutboundMaintainerEvent
public OutboundMaintainerEvent()Creates a timer on the shared simple timer pool.
Method Details
timeReached
public void timeReached()Run the outbound connection maintainer.- Specified by:
timeReachedin classSimpleTimer2.TimedEvent