Files
paperless-mobile/packages/mock_server/lib/response_delay_generator.dart
2023-05-29 12:19:34 +02:00

47 lines
928 B
Dart

import 'dart:math';
abstract interface class DelayGenerator {
Duration nextDelay();
}
class RandomDelayGenerator implements DelayGenerator {
/// Minimum allowed response delay
final Duration minDelay;
/// Maximum allowed response delay
final Duration maxDelay;
final Random _random = Random();
RandomDelayGenerator(this.minDelay, this.maxDelay);
@override
Duration nextDelay() {
return Duration(
milliseconds: minDelay.inMilliseconds +
_random.nextInt(
maxDelay.inMilliseconds - minDelay.inMilliseconds,
),
);
}
}
class ConstantDelayGenerator implements DelayGenerator {
final Duration delay;
const ConstantDelayGenerator(this.delay);
@override
Duration nextDelay() {
return delay;
}
}
class ZeroDelayGenerator implements DelayGenerator {
const ZeroDelayGenerator();
@override
Duration nextDelay() {
return Duration.zero;
}
}