java.lang.Object
net.i2p.util.SimpleTimer2.TimedEvent
net.i2p.router.crypto.ratchet.ACKTimer
- All Implemented Interfaces:
Runnable
Timer for sending ratchet-layer acknowledgments when application responses are delayed, supporting NS, NSR, ACK requests, and forward next key blocks.
The vast majority of these will be cancelled before firing, when streaming sends a response. This should only fire if streaming drops completely, and for certain datagram traffic patterns.
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final RouterContextThe router the timer runs on.private final DestinationThe peer we sent the message to.private final LogLogger for this class.private final DestinationThe peer we received the message from.private static final longHow long an unacknowledged message is kept - 60 seconds.private static final intSendMessageOptions.LS_MASK, don't send LS.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
ConstructorsConstructorDescriptionACKTimer(RouterContext context, Destination from, Destination to) ACK timer for ratchet.Method 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.
Field Details
_context
The router the timer runs on._log
Logger for this class._from
The peer we sent the message to._to
The peer we received the message from.EXPIRATION
private static final long EXPIRATIONHow long an unacknowledged message is kept - 60 seconds.- See Also:
LS_MASK
private static final int LS_MASKSendMessageOptions.LS_MASK, don't send LS. Never bundle our lease set with a ratchet-layer ACK: we don't need to, and it would be the wrong lease set for subsessions.- See Also:
Constructor Details
ACKTimer
ACK timer for ratchet.- Parameters:
context- router context for timer and loggingfrom- local destination ACK will come from, non-nullto- remote destination ACK will go to, non-null
Method Details
timeReached
public void timeReached()Description copied from class:SimpleTimer2.TimedEventCalled when this event's scheduled time arrives. Must NOT block. For periodic events, call schedule(period) at the end to self-reschedule.- Specified by:
timeReachedin classSimpleTimer2.TimedEvent