enqueue method

Future<void> enqueue(
  1. WireMessage message, {
  2. MessagePriority priority = MessagePriority.normal,
})

Add a message to the queue

Implementation

Future<void> enqueue(
  WireMessage message, {
  MessagePriority priority = MessagePriority.normal,
}) async {
  final completer = Completer<void>();
  final queuedMessage = QueuedMessage(
    message: message,
    priority: priority,
    completer: completer,
  );

  // Clean up expired messages first
  _cleanupExpiredMessages();

  // Check if queue would overflow
  if (_totalQueued >= config.maxSize) {
    if (config.dropOldestOnOverflow) {
      _dropOldestMessage();
    } else {
      completer.completeError(MessageQueueOverflowException(_totalQueued, config.maxSize));
      return completer.future;
    }
  }

  // Add to appropriate priority queue
  final priorityIndex = config.priorityEnabled ? priority.level : MessagePriority.normal.level;
  _priorityQueues[priorityIndex].add(queuedMessage);
  _totalQueued++;

  logger.fine('Queued ${message.command} message (priority: $priority, size: $_totalQueued)');
  // Don't complete here - let the send loop complete when message is actually sent
  return completer.future;
}