java.lang.Object
net.i2p.util.SimpleTimer2.TimedEvent
net.i2p.client.streaming.impl.ConnectionManager.BanExpiry
All Implemented Interfaces:
Runnable
Enclosing class:
ConnectionManager

private class ConnectionManager.BanExpiryextends SimpleTimer2.TimedEvent
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 Details

    • PERIOD

      private static final long PERIOD
      Ban expiry passes run every 1 minute.
      See Also:
    • _stopped

      private volatile boolean _stopped
      Set 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 from ConnectionManager.shutdown(), which owns this instance.
    • isStopped

      boolean isStopped()
      Whether stop() has been called.
      Returns:
      true once stopped
    • timeReached

      public void timeReached()
      Description copied from class: SimpleTimer2.TimedEvent
      Called when this event's scheduled time arrives. Must NOT block. For periodic events, call schedule(period) at the end to self-reschedule.
      Specified by:
      timeReached in class SimpleTimer2.TimedEvent