reconnectDelay static method

Duration reconnectDelay(
  1. int attempts, {
  2. Duration baseDelay = reconnectBaseDelay,
  3. Duration maxDelay = reconnectMaxDelay,
  4. Duration jitter = reconnectJitter,
  5. Random? random,
})

The delay before reconnect attempt number attempts (0-based).

Exponential backoff with jitter: min(baseDelay * 2^attempts, maxDelay) + random(jitter).

Implementation

static Duration reconnectDelay(
  int attempts, {
  Duration baseDelay = reconnectBaseDelay,
  Duration maxDelay = reconnectMaxDelay,
  Duration jitter = reconnectJitter,
  Random? random,
}) {
  // Cap the shift so the doubling cannot overflow.
  final shift = min(attempts, 20);
  final delay = min(
    baseDelay.inMilliseconds << shift,
    maxDelay.inMilliseconds,
  );
  final jitterMs = jitter.inMilliseconds <= 0
      ? 0
      : (random ?? Random()).nextInt(jitter.inMilliseconds + 1);
  return Duration(milliseconds: delay + jitterMs);
}