Signed-off-by: Samuel Just <sam.just@inktank.com>
lock.Unlock();
}
+void DispatchQueue::discard_queue(uint64_t id) {
+ Mutex::Locker l(lock);
+ list<QueueItem> removed;
+ mqueue.remove_by_class(id, &removed);
+ for (list<QueueItem>::iterator i = removed.begin();
+ i != removed.end();
+ ++i) {
+ assert(!(i->is_code())); // We don't discard id 0, ever!
+ msgr->dispatch_throttle_release(
+ i->get_message()->get_dispatch_throttle_size());
+ }
+}
+
void DispatchQueue::start()
{
assert(!stop);
}
void enqueue(Message *m, int priority, uint64_t id);
- void discard_queue(uint64_t id) {
- Mutex::Locker l(lock);
- mqueue.remove_by_class(id);
- }
+ void discard_queue(uint64_t id);
uint64_t get_id() {
Mutex::Locker l(lock);
return next_pipe_id++;