handleCancellationAndTimeout<T> function
void
handleCancellationAndTimeout<T>(
- Completer<
T> completer, { - CancellationToken? cancellationToken,
- Duration? timeout,
- void onCancelledOrTimedOut()?,
- required String operationName,
Handles cancellation and timeout for a given operation.
This method sets up listeners for cancellation and timeout events,
completing the provided completer
with an error if either occurs.
Implementation
void handleCancellationAndTimeout<T>(
Completer<T> completer, {
CancellationToken? cancellationToken,
Duration? timeout,
void Function()? onCancelledOrTimedOut,
required String operationName,
}) {
if (cancellationToken != null) {
cancellationToken.whenCancelled.then((_) {
if (!completer.isCompleted) {
onCancelledOrTimedOut?.call();
completer.completeError(
CancellationException('$operationName cancelled'),
);
}
});
}
if (timeout != null) {
Future.delayed(timeout).then((_) {
if (!completer.isCompleted) {
onCancelledOrTimedOut?.call();
completer.completeError(
TimeoutException('$operationName timed out after $timeout'),
);
}
});
}
}