dequeue method

QueuedMessage? dequeue()

Remove and return the next message from the queue

Implementation

QueuedMessage? dequeue() {
  _cleanupExpiredMessages();

  if (config.priorityEnabled) {
    // Check priority queues in order (critical first)
    for (final queue in _priorityQueues) {
      if (queue.isNotEmpty) {
        final message = queue.removeFirst();
        _totalQueued--;
        logger.fine('Dequeued ${message.message.command} message (priority: ${message.priority}, remaining: $_totalQueued)');
        return message;
      }
    }
  } else {
    // Just use normal priority queue
    final normalQueue = _priorityQueues[MessagePriority.normal.level];
    if (normalQueue.isNotEmpty) {
      final message = normalQueue.removeFirst();
      _totalQueued--;
      logger.fine('Dequeued ${message.message.command} message (remaining: $_totalQueued)');
      return message;
    }
  }

  return null;
}