java.lang.Object
net.i2p.util.SimpleTimer2.TimedEvent
net.i2p.client.streaming.impl.ConnectionManager.BanExpiry
- All Implemented Interfaces:
Runnable
- Enclosing class:
ConnectionManager
Periodically drops temp-bans whose time has elapsed and resets the per-dest refusal window, so a ban always expires (24h default) and the refusal counter doesn't grow unbounded. Mirrors ConnThrottler.Cleaner. Also reconciles the per-dest stream budgets against the live connection table.
Field Summary
FieldsFields 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
Public 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
PERIOD
_stopped
private volatile boolean _stoppedSet by stop(); blocks both further sweeps and, critically, the self re-arm at the end of timeReached().TimedEvent.schedule()unconditionally clears _cancelAfterRun, so a bare cancel() racing a sweep that had already started would be undone by that re-arming schedule(). The event would fire again on a shut-down manager. Reading the flag makes shutdown sticky either way.
Constructor Details
BanExpiry
BanExpiry()Prepares the periodic ban expiry pass.
Method Details
stop
void stop()Shut this sweeper down permanently: cancel the pending run and prevent timeReached() from re-arming itself. Called fromConnectionManager.shutdown(), which owns this instance.isStopped
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