这里是第一层:
1struct tagDataHead
2{
3 WORD wDataSize; //数据大小
4 WORD wIdentifier; //类型标识
5 DWORD dwInsertTime; //插入时间
6};
这一层实际上是由CDataStorage负责打包管理,在CQueueServiceEvent执行PostTimerEvent操作的时候会在内部调用CQueueService的add最终调用到CDataStrorage的Add来打包数据,这里的结构也是非常像网络数据包|- len -|- type -|- data -|。
在来看Post这一层做的数据打包:
1//定时器事件
2struct NTY_TimerEvent
3{
4 WORD wTimerID; //定时器 ID
5 WPARAM wBindParam; //绑定参数
6};
|- len -|- type -|- sub protocl -|。
其他事件的打包过程都是类似的:
1//数据库请求事件
2struct NTY_DataBaseEvent
3{
4 WORD wIndex; //对象索引
5 WORD wRoundID; //对象标识
6 WORD wRequestID; //请求标识
7};
8
9//网络应答事件
10struct NTY_SocketAcceptEvent
11{
12 WORD wIndex; //连接索引
13 WORD wRoundID; //连接标识
14 DWORD dwClientIP; //连接地址
15};
16
17//网络读取事件
18struct NTY_SocketReadEvent
19{
20 WORD wIndex; //连接索引
21 WORD wRoundID; //连接标识
22 WORD wDataSize; //数据大小
23 CMD_Command Command; //命令信息
24};
25
26//网络关闭事件
27struct NTY_SocketCloseEvent
28{
29 WORD wIndex; //连接索引
30 WORD wRoundID; //连接标识
31 DWORD dwClientIP; //连接地址
32 DWORD dwConnectSecond; //连接时间
33};
还是一样,一句话总结CQueueServiceEvent:
线程安全的接受各种异步事件,并打包封装好以后插入到关联的制定IQueueService中.
|