java.lang.Object
net.i2p.util.SimpleTimer2.TimedEvent
net.i2p.client.streaming.impl.Connection.FloorCheckEvent
- All Implemented Interfaces:
Runnable
- Enclosing class:
Connection
Periodic evaluation of the throughput floor.
The ACK path can only reach the floor while bytes are being acknowledged, so a connection that has gone entirely quiet would never be examined and a hard stall would be undetectable from there. This timer closes that gap. It is armed only once a baseline exists, so connections that never transfer data do not pay for it.
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
ConstructorsConstructorDescriptionBind to the connection's shared timer with a 500ms reschedule threshold, so re-arming within that window of the pending fire is coalesced instead of churning the timer.Method Summary
Public MethodsModifier and TypeMethodDescription(package private) voidarm()Start the periodic check now that a baseline is available.(package private) voidscheduleCheck(long delay) Reschedule on the next sample boundary.voidCalled when this event's scheduled time arrives.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.
Constructor Details
FloorCheckEvent
FloorCheckEvent()Bind to the connection's shared timer with a 500ms reschedule threshold, so re-arming within that window of the pending fire is coalesced instead of churning the timer.
Method Details
arm
void arm()Start the periodic check now that a baseline is available.scheduleCheck
void scheduleCheck(long delay) Reschedule on the next sample boundary.- Parameters:
delay- wait in ms until the next evaluation
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