drain method
Removes and returns all non-expired messages. Expired messages are discarded.
Implementation
List<QueuedMessage> drain() {
final result = <QueuedMessage>[];
while (_queue.isNotEmpty) {
final item = _queue.removeFirst();
if (!item.isExpired) result.add(item);
}
return result;
}