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

private class Connection.TLProbeEventextends SimpleTimer2.TimedEvent
Tail Loss Probe: fire at ~2*RTT to detect loss before the RTO timer. Re-sends the oldest unacked packet as a probe. If the original was lost, the probe fills the gap and the peer's ACK triggers fast recovery. If the original was delivered, the duplicate triggers ackImmediately().

Re-armed in ackPackets() whenever the head of the window is stuck while later packets are ACKed, so a single lost head-of-line packet is probed at ~2*RTT instead of waiting on an RTO that partial-ACK push-back keeps deferring. Does NOT trigger congestion control (probe may not be lost).

  • Field Details

    • _pending

      private volatile boolean _pending
      Whether a probe is already scheduled.
  • Constructor Details

    • TLProbeEvent

      TLProbeEvent()
      The timer event that fires a throughput probe.
  • Method Details

    • scheduleProbe

      void scheduleProbe(int delayMs)
      Schedules a throughput probe.
      Parameters:
      delayMs - how long to wait before probing, in milliseconds
    • cancel

      public boolean cancel()
      Cancel the pending probe, if any.
      Overrides:
      cancel in class SimpleTimer2.TimedEvent
      Returns:
      true if the event will not execute, false if already idle/cancelled
    • timeReached

      public void timeReached()
      Send the tail loss probe when the timer fires.
      Specified by:
      timeReached in class SimpleTimer2.TimedEvent