FallbackStreamFunction constructor
FallbackStreamFunction({
- required List<
ChainEntry> entries, - ModelRolesRetryPolicy policy = const ModelRolesRetryPolicy(),
- void onNotice(
- FallbackNotice notice
- DateTime now()?,
- double jitterFraction()?,
- Future<
bool> sleeper(- Duration delay,
- CancelToken? cancelToken
- QueueDeathClassifier? queueClassifier,
- ProviderQueueState? queueState,
Creates the wrapper. entries must be non-empty. jitterFraction and
sleeper are injectable for deterministic tests.
Implementation
FallbackStreamFunction({
required List<ChainEntry> entries,
this.policy = const ModelRolesRetryPolicy(),
this.onNotice,
DateTime Function()? now,
double Function()? jitterFraction,
Future<bool> Function(Duration delay, CancelToken? cancelToken)? sleeper,
/// Issue #418: when set, the queue death classifier decides what
/// advances (7 death kinds) and what surfaces verbatim
/// (content_filter/user abort). Null keeps the classic rate-limit +
/// transport policy byte-identical.
this.queueClassifier,
/// Issue #418: the sticky-cursor/health state the queue editor reads.
/// Null in roles mode.
this.queueState,
}) : _entries = List.unmodifiable(entries),
_now = now ?? DateTime.now,
_jitterFraction = jitterFraction ?? Random().nextDouble,
_sleeper = sleeper ?? _defaultSleeper {
if (entries.isEmpty) {
throw ArgumentError.value(
entries,
'entries',
'a fallback chain needs at least one entry',
);
}
}