enqueue method
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;
}