发送消息,经过类Sender处理过的消息
1、只能对已经推送到消息队列中的消息进行包装
2、对sender实例的拷贝,只是拷贝了指向队列的指针,而非队列本身。
namespace messaging
{
class sender
{
queue*q;
public:
sender():
q(nullptr)
{}
explicit sender(queue*q_):
q(q_)
{}
template<typename Message>
void send(Message const& msg)
{
if(q)
{
q->push(msg);
}
}
};
}
接收消息
1、等待队列中的消息2、检查消息类型是否与所等待消息类型是否匹配
3、调用相应的函数进行处理
namespace messaging
{
class receiver
{
queue q;
public:
operator sender()
{
return sender(&q);
}
dispatcher wait()
{
return dispatcher(&q);
}
};
}