Files
Client/lib/utils/exponential_backoff.dart
T

12 lines
432 B
Dart

/// Delay before retry number [attempt] (1-based): [base] doubled per attempt,
/// capped at [max].
Duration exponentialBackoff(
int attempt, {
Duration base = const Duration(milliseconds: 500),
Duration max = const Duration(seconds: 5),
}) {
final exponent = (attempt - 1).clamp(0, 30);
final millis = base.inMilliseconds * (1 << exponent);
return millis >= max.inMilliseconds ? max : Duration(milliseconds: millis);
}