Mutex::Locker l(local_delivery_lock);
if (local_messages.empty())
local_delivery_cond.Signal();
- local_messages.push_back(make_pair(m, priority));
+ local_messages.emplace(m, priority);
return;
}
local_delivery_cond.Wait(local_delivery_lock);
continue;
}
- auto p = local_messages.front();
- local_messages.pop_front();
+ auto p = std::move(local_messages.front());
+ local_messages.pop();
local_delivery_lock.Unlock();
const Message::ref& m = p.first;
int priority = p.second;
void DispatchQueue::discard_local()
{
- for (list<pair<Message::ref, int> >::iterator p = local_messages.begin();
- p != local_messages.end();
- ++p) {
- ldout(cct,20) << __func__ << " " << p->first << dendl;
- }
- local_messages.clear();
+ decltype(local_messages)().swap(local_messages);
}
void DispatchQueue::shutdown()
#include <atomic>
#include <map>
+#include <queue>
#include <boost/intrusive_ptr.hpp>
#include "include/assert.h"
-#include "include/xlist.h"
#include "common/Throttle.h"
#include "common/Mutex.h"
#include "common/Cond.h"
Mutex local_delivery_lock;
Cond local_delivery_cond;
bool stop_local_delivery;
- list<pair<Message::ref, int>> local_messages;
+ std::queue<pair<Message::ref, int>> local_messages;
class LocalDeliveryThread : public Thread {
DispatchQueue *dq;
public: