MSG–消息机制
学过操作系统的同学们都知道,windows底层的数据传递有一个完善的消息机制(当时读书的时候也是烦透了PeekMsg这种东西,不过不得不说现在想起来其实操作系统是一门很有用的软件架构设计的书,操作系统基本包含了所有的基本软件体系架构),好了,闲谈无多,我们来看看代码。
首先是基本的消息结构体
Telegram.h
struct Telegram
{
long int dispatchTime_;
int sender_;
int receiver_;
MsgType msg_;
void* extraInfo_;
bool operator<(const Telegram& telegram)const
{
return (this->dispatchTime_ < telegram.dispatchTime_);
}
Telegram(long int dispatchTime, int sender, int receiver, MsgType msg, void* extraInfo):
dispatchTime_(dispatchTime),
sender_(sender),
receiver_(receiver),
msg_(msg),
extraInfo_(extraInfo)
{
}
};
这个结构体包含了时序,传输者,接受者,消息以及额外信息。用int的类型定义的sender和receiver其实是用户的ID,我们可以通过ID找到实体的指针。
我们定义了“<”的运算符重载,这样在map结构中会根据此符号进行元素排序,我们就可以拥有带有时序的消息集合了。
然后是消息处理机,本质是一个任务队列,根据任务时序进行消息传递。
MsgDispatcher.h
class MsgDispatche