Run clang-format
This commit is contained in:
@@ -2,49 +2,38 @@
|
||||
#include
|
||||
#include
|
||||
#include
|
||||
<mutex>
|
||||
<condition_variable>
|
||||
<queue>
|
||||
<memory>
|
||||
namespace messaging
|
||||
<mutex><condition_variable><queue><memory> namespace messaging
|
||||
{
|
||||
struct message_base
|
||||
{
|
||||
virtual ~message_base()
|
||||
{}
|
||||
};
|
||||
struct message_base {
|
||||
virtual ~message_base() {}
|
||||
};
|
||||
|
||||
template<typename Msg>
|
||||
struct wrapped_message:
|
||||
message_base
|
||||
{
|
||||
Msg contents;
|
||||
explicit wrapped_message(Msg const& contents_):
|
||||
contents(contents_)
|
||||
{}
|
||||
};
|
||||
template <typename Msg>
|
||||
struct wrapped_message : message_base {
|
||||
Msg contents;
|
||||
explicit wrapped_message(Msg const& contents_) : contents(contents_) {}
|
||||
};
|
||||
|
||||
class queue
|
||||
class queue {
|
||||
std::mutex m;
|
||||
std::condition_variable c;
|
||||
message_base std::queue<std::shared_ptr<message_base>> q;
|
||||
|
||||
public:
|
||||
template <typename T>
|
||||
void push(T const& msg)
|
||||
{
|
||||
std::mutex m;
|
||||
std::condition_variable c;
|
||||
message_base
|
||||
std::queue<std::shared_ptr<message_base> > q;
|
||||
public:
|
||||
template<typename T>
|
||||
void push(T const& msg)
|
||||
{
|
||||
std::lock_guard<std::mutex> lk(m);
|
||||
q.push(std::make_shared<wrapped_message<T> >(msg));
|
||||
c.notify_all();
|
||||
}
|
||||
std::shared_ptr<message_base> wait_and_pop()
|
||||
{
|
||||
std::unique_lock<std::mutex> lk(m);
|
||||
c.wait(lk,[&]{return !q.empty();});
|
||||
auto res=q.front();
|
||||
q.pop();
|
||||
return res;
|
||||
}
|
||||
};
|
||||
std::lock_guard<std::mutex> lk(m);
|
||||
q.push(std::make_shared<wrapped_message<T>>(msg));
|
||||
c.notify_all();
|
||||
}
|
||||
std::shared_ptr<message_base> wait_and_pop()
|
||||
{
|
||||
std::unique_lock<std::mutex> lk(m);
|
||||
c.wait(lk, [&] { return !q.empty(); });
|
||||
auto res = q.front();
|
||||
q.pop();
|
||||
return res;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user