Return all elements in the queue.
| 96 | |
| 97 | // Return all elements in the queue. |
| 98 | std::vector<T> dequeueAll() { |
| 99 | std::lock_guard<std::mutex> lock(mutex_); |
| 100 | |
| 101 | total_count_ = 0; |
| 102 | |
| 103 | std::vector<T> result; |
| 104 | result.reserve(priority_.size() + queue_.size()); |
| 105 | while (!priority_.empty()) { |
| 106 | result.emplace_back(std::move(priority_.front())); |
| 107 | priority_.pop_front(); |
| 108 | } |
| 109 | while (!queue_.empty()) { |
| 110 | result.emplace_back(std::move(queue_.front())); |
| 111 | queue_.pop_front(); |
| 112 | } |
| 113 | |
| 114 | return result; |
| 115 | } |
| 116 | |
| 117 | // Returns true if the queue is empty. This is lock-free. |
| 118 | bool isEmpty() { return total_count_ == 0; } |
no test coverage detected