enqueue<T> method

Future<T> enqueue<T>({
  1. required String domain,
  2. required Future<T> execute(),
  3. RequestPriority priority = RequestPriority.normal,
})

Adds a request to the queue

Implementation

Future<T> enqueue<T>({
  required String domain,
  required Future<T> Function() execute,
  RequestPriority priority = RequestPriority.normal,
}) {
  // Check if the queue is full
  if (_queue.length >= maxQueueSize) {
    throw Exception('Request queue is full');
  }

  // Create a completer for the request
  final completer = Completer<T>();

  // Create a queued request
  final request = QueuedRequest<T>(
    domain: domain,
    priority: priority,
    execute: execute,
    completer: completer,
  );

  // Add the request to the queue
  _queue.add(request as QueuedRequest<dynamic>);

  // Start processing the queue if it's not already processing
  if (!_isProcessing) {
    _processQueue();
  }

  return completer.future;
}