#define PROC_MAX 100
#define PROC_MIN 0
enum ErrorCode
{
ERR_OK = 0,
ERR_INVALID_DATA,
};
class Message
{
public:
Message() {}
~Message() {}
int proc;
int content;
};
typedef int32_t(*MessageHandler)(Message*);//状态模式,函数指针 每个消息对应不同的处理函数 不使用switch case模式 状态模式更好理解 方便扩展
typedef SafeQueue<Message*> MessageList; //safequeue见上一篇文章
MessageList m_messages;
MessageHandler m_messageHandlers[PROC_MAX];
void setMessageHandler(int32_t proc, MessageHandler handler)
{
if (proc<PROC_MIN || proc>PROC_MAX)
return;
m_messageHandlers[proc] = handler;
}
int32_t onGetMessage0(Message* msg)
{
int id = msg->proc;
cout << "deal msg 0\n";
/*
消息处理部分 具体处理每种不同的消息
*/
if (false)
{
return ERR_INVALID_DATA;
}
return ERR_OK;
}
int32_t onGetMessage1(Message* msg)
{
int id = msg->proc;
cout << "deal msg 1\n";
/*
消息处理部分 具体处理每种不同的消息
*/
return ERR_OK;
}
int32_t onGetMessage2(Message* msg)
{
int id = msg->proc;
cout << "d
SafeQueue读写示例
最新推荐文章于 2024-04-14 14:50:26 发布