查看: 259|回复: 1

网狐棋牌(二) CQueueServiceEvent初步分析(1)

[复制链接]

7

主题

34

帖子

199

积分

vip会员

Rank: 1

积分
199
发表于 2020-3-27 16:05:47 | 显示全部楼层 |阅读模式
代码分析:
首先CQueueServiceEvent这个名字很有诱惑,,,你感觉他是一个事件,其实不是。它实际的功能应该是一个带打包功能的事件队列,,,或者说是一个像指定的类似EventQueue的东东中投递事件。从接口上看,这个东东能投递TimerEvent  DataBaseEvent  SocketAcceptEvent  SocketReadEvent  SocketCloseEvent
应为它本身持有一个CQueueService指针,所以本身并不负责数据管理,只负责打包并添加到CQueueService实例中去。

先看定时器事件:

1网狐棋牌(二) CQueueServiceEvent初步分析(1)    //定时器事件
2网狐棋牌(二) CQueueServiceEvent初步分析(1)    bool PostTimerEvent(WORD wTimerID, WPARAM wBindParam)
3网狐棋牌(二) CQueueServiceEvent初步分析(1)    {
4网狐棋牌(二) CQueueServiceEvent初步分析(1)        //效验参数
5网狐棋牌(二) CQueueServiceEvent初步分析(1)        ASSERT(m_pIQueueService!=NULL);
6网狐棋牌(二) CQueueServiceEvent初步分析(1)        if (m_pIQueueService==NULL) return false;
7网狐棋牌(二) CQueueServiceEvent初步分析(1)
8网狐棋牌(二) CQueueServiceEvent初步分析(1)        //缓冲锁定
9网狐棋牌(二) CQueueServiceEvent初步分析(1)        CThreadLockHandle BufferLockHandle(&m_BufferLock);
10网狐棋牌(二) CQueueServiceEvent初步分析(1)
11网狐棋牌(二) CQueueServiceEvent初步分析(1)        //投递消息
12网狐棋牌(二) CQueueServiceEvent初步分析(1)        NTY_TimerEvent * pTimerEvent=(NTY_TimerEvent *)m_cbBuffer;
13网狐棋牌(二) CQueueServiceEvent初步分析(1)        pTimerEvent->wTimerID=wTimerID;
14网狐棋牌(二) CQueueServiceEvent初步分析(1)        pTimerEvent->wBindParam=wBindParam;
15网狐棋牌(二) CQueueServiceEvent初步分析(1)        m_pIQueueService->AddToQueue(EVENT_TIMER,m_cbBuffer,sizeof(NTY_TimerEvent));
16网狐棋牌(二) CQueueServiceEvent初步分析(1)
17网狐棋牌(二) CQueueServiceEvent初步分析(1)        return true;
18网狐棋牌(二) CQueueServiceEvent初步分析(1)    }

嗯哼,代码质量很高哈,,,
入口都有断言在debug阶段帮助暴露错误,断言之后还有if语句再次判断,这样即使release版本错误也不会被漏掉,,,
关于事件的封装,在这里其实已经分层了,,,

回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | enginedx注册

本版积分规则

 
 



邮件留言:


 
返回顶部