realtimeRetryDelay method

  1. @protected
Duration realtimeRetryDelay(
  1. int attemptNumber
)
inherited

Calculates the next realtime retry delay.

Implementation

@protected
Duration realtimeRetryDelay(int attemptNumber) {
  final config = SynquillStorage.config ?? const SynquillStorageConfig();
  final baseDelayMs = (config.initialRetryDelay.inMilliseconds *
          math.pow(config.backoffMultiplier, attemptNumber - 1))
      .round();
  final cappedMs = math.min(baseDelayMs, config.maxRetryDelay.inMilliseconds);
  final flooredMs = math.max(cappedMs, config.minRetryDelay.inMilliseconds);

  if (config.jitterPercent <= 0) {
    return Duration(milliseconds: flooredMs);
  }

  final jitterRange = flooredMs * config.jitterPercent;
  final jitterOffset =
      ((_realtimeJitterRandom.nextDouble() * 2) - 1) * jitterRange;
  final jitteredMs = (flooredMs + jitterOffset).round();
  final finalMs = math.max(jitteredMs, config.minRetryDelay.inMilliseconds);
  return Duration(milliseconds: finalMs);
}