cancelAllRequests method

Future<void> cancelAllRequests({
  1. Future cancelReasonProcessor()?,
  2. bool retryRequestsAfterProcessing = false,
})

Cancels all requests in collection.

If retryRequestsAfterProcessing is true then every request will be retried after cancelReasonProcessor is finished

Implementation

Future<void> cancelAllRequests({
  Future Function()? cancelReasonProcessor,
  bool retryRequestsAfterProcessing = false,
}) async {
  final alreadyWaitingForRetry = cancelReasonProcessingCompleter != null;

  if (retryRequestsAfterProcessing && !alreadyWaitingForRetry) {
    cancelReasonProcessingCompleter = Completer();
  }

  for (final element in requests) {
    element.cancel();
  }

  if (cancelReasonProcessor != null) {
    await cancelReasonProcessor();

    if (retryRequestsAfterProcessing) {
      if (!(cancelReasonProcessingCompleter?.isCompleted ?? true)) {
        cancelReasonProcessingCompleter?.complete();
      }

      cancelReasonProcessingCompleter = null;
    }
  }
}