|
专业二次开发网狐6603休闲版本与网狐经典二次开发,今天带来是棋牌游戏模拟玩家双方发送消息。
CAttempterEngine实现了两个接口:IQueueServiceSink、IAttemperEngine;通过前面的分析,偶们了解到,IQueue接口自动化ServiceSink这个接口被是用来处理CQueue事件Service中的数据的,根据上面的UML我们可以看到,CAttemperEngine关联了一个CQueueService(或者直接点说是:持有了一个CQueue消息的拼音Service对象,说组合也成)。这样的话这个CAttemperEngine暴露出来的接口就只剩下IAttemperEnging了。
1 //启动服务
2 virtual bool __cdecl StartService();
3 //消息免打扰停止服务
4 virtual bool __cdecl StopService();
5 //设置网络
6 virtual bool __cdecl SetSocketEngine(IUnknownEx pIUnknownEx);
7 //注册钩子
8 virtual bool __cdecl SetAttemperEngineSink(IUnk消息范文nownEx pIUnknownEx);
9 //获取接口
10 virtual void __cde事件cl GetQueueService(const IID & Guid, DWORD dwQueryVer);
这个接口有两处值得单独讨论的:SetSocketEngine、GetQueueService;SetSocketEngine,后面的分析中还会出现,我觉得这里是一个设引擎故障是什么意思计上的失误导致需要暴露socket引擎接口;
Get引擎之心QueueService的设计思路可能是说,每个IAttemperEngine接口背后都有一个CQueueService,从以后的分析中可以看到,这个思路是理解整个kernel的关键。调度引擎应该是一个消息汇总(效验从个个引擎引擎盖怎么打开产生的消息)然后派发到IAttemperEngineSink。因为代码中是没有看到有关ITimerSinkISocketSin消息怎么写k之类的东东的,整个消息是个引擎引擎产生,然后投递到指定的CQueu引擎壁纸eService,然后汇总到这里被派发到I接口文档AttemperEngineSink出去的
接口是什么 1//队列接口
2void __cdecl CAttemperEngine::OnQueueServiceSink(WORD wIdentifier, void pBuffer, WORD wDataSize, DWORD dwInsertTime)
3{
4 //内核事件
5 消息怎么写 ASSERT(m_pIAttemperEngineSink!=NULL);
6 switch (wIdentifier)
7 {
8 case EV事件的英文ENT_TIMER: //定时器事件
9 {
10 接口自动化 &n事件的英文bsp; //效验参数
11 &n消息免打扰还能收到消息吗b接口sp; &引擎之心优化nbs接口和抽象类的区别p; ASSERT(wDataSize==sizeof(NTY_TimerEvent));
12 if (wDa事件的英文taSize!=sizeof(NTY_TimerEvent)) return;
13
14 //处理消息
15  引擎; NTY_TimerEven接口t pTimerEvent=(NTY_TimerEvent )pB引擎盖uf事件暴露法治意识缺位fer;
1引擎壁纸6 &n接口crc错误计数bsp; m_pIAttemperEngineSink->OnEventTime消息的格式r(pTimerEvent->wTimerID,pTimerEvent->wBindPa事件视界ram);
17
18 retu消息英语rn;
19 }
20 case EVENT接口测试_DATABASE: //数据库事件
21  接口; {
22 &nbs消息p; 消息英语 引擎是什么意思 //效验参数
23 ASS事件视界ERT(wDataS接口和抽象类的区别ize>=sizeof(NTY_DataBaseEve引擎英文nt));
24  引擎之心; if (wDataSize
25
26&消息的拼音nbsp;  事件营销案例; //处理消息
27 &n消息范文bsp;  接口类型; NTY_DataBaseEvent pDataBaseEvent=(NTY_DataBaseEvent )pBuffer;
28  事件查看器; m_pIAttemperEngineSink->OnEventDataBase(pDataBaseEvent+1,wDataSize-sizeof引擎读音(NTY_Data事件研究法BaseEvent),pDataBaseEvent);
29
30 &nbs消息英语p; &nb事件研究法sp; return;
31&事件的英文nbsp;&nb消息提示音阿斗下载sp; &事件视界nbsp; &n消息英语bsp; }
32 &nbs事件的英文p; case EVENT_SOCKET_ACCEPT: //网络应答事件
33 {
34 引擎盖怎么打开 //效验大小
35 &nb接口测试sp;  接口自动化; ASSERT(wDataSize==sizeof(NTY_SocketAcceptEvent));
36 &n引擎壁纸bsp; if (wDataSize!=sizeof(NTY_SocketAcceptEvent)) return;
37
38  引擎盖; 事件暴露法治意识缺位 //处理消息
39&nbs接口crc错误计数p; NTY_SocketAcceptEvent pSocketAcceptEvent=(NTY_SocketAcceptEvent )pBuffer;
40&接口和抽象类的区别nbsp; m_pIAttemperEngineSink->OnEventSocketAccept(pSocketAcceptEvent);
41
42 return;
43 }
44 引擎 case EVENT_SOCKET_READ: //网络读取事件
45 &nbs接口类型p; {
46 //效验大小
47 接口 &效验nbsp; NTY_SocketReadEven接口自动化t pSocketReadEvent=(NTY_So事件cketReadEvent )pBuffer;
48 ASSERT(wDataSiz消息的格式e>=sizeof(NTY_Soc消息英语ketReadEvent));
49 消息免打扰是什么意思 &n效验bsp; ASS接口自动化ERT(wDataSize==(sizeof(NTY_SocketReadEvent)+pSocketReadEve事件营销nt->wDataSize));
50&nbs接口自动化p; &nbs接口文档p; &nb引擎之心优化sp; if (wDataSize
51 &引擎盖怎么打开nbsp; if (wDataSize!=(sizeof(NTY_Socke消息提示音阿斗下载tReadEvent)+pSocketReadEvent->wDa消息范文taSize)事件的英文) retu接口和抽象类的区别rn;
52
53 &n引擎英文bsp; 事件暴露法治意识缺位 //处理消事件的英文息
54 bool bSuccess=false;
55 try
56&nb消息的格式sp; 消息英语&消息免打扰还能收到消息吗nbsp; {
57&nbs效验p; &nbs接口和抽象类的区别p; &nb引擎盖sp; bS事件脉络uccess=m_pIAttemperEngineSink->OnEventSocketRead(pSocketReadEvent->Command,pSocket接口文档ReadEvent+1,pSocketReadEvent->wDataSize,pSoc消息的格式ketR事件营销eadEvent);
58 &引擎壁纸nbs接口crc错误计数p; &nbs接口是什么p;&nb消息免打扰还能收到消息吗sp; 接口和抽象类的区别 }
59&效验读音nbsp;&nb引擎读音sp; catch接口的作用 () { }
60 &n消息免打扰是什么意思bsp; i消息已发出但被对方拒收什么意思f (bSuccess事件研究法==引擎盖false) m_pITCPSocketEngine->Clos事件战法兑换表eSocket(pSocketReadEvent->wIndex,pSocketReadEvent->wR效验的意思oundID);
61
62 &n事件暴露法治意识缺位bsp;&nb消息的拼音sp; return;
63接口是什么&n事件bsp; 事件的英文 事件研究法 }
64 &消息已发出但被对方拒收什么意思nb引擎盖怎么打开sp;&nb消息免打扰是什么意思sp; case EVENT_SOCKET_CLOSE: //网络关闭事件
65 &nbs引擎之心优化p; {
66  消息已发出但被对方拒收什么意思; //效验大小
67 &接口类型nbsp;  事件;&nb引擎故障是什么意思sp;&nb引擎盖怎么关sp;  引擎盖怎么打开; ASSERT(wDataSize==sizeof(NTY_SocketCloseEvent));
68 &接口和抽象类的区别nbsp; if消息免打扰还能收到消息吗 (接口卡wData消息免打扰还能收到消息吗Size!=sizeof(NTY_SocketCloseEvent)) return;
69
70 &接口测试nbsp; //处理消息
71 引擎壁纸 引擎之心优化 NTY_Soc事件的英文ketCloseEvent pSocketCloseEvent=(NTY_Socket引擎英文CloseEvent )pBuffer引擎故障是什么意思;
72 &n事件暴露法治意识缺位bsp; m_pIAttemperEngin接口的作用eSink-引擎壁纸>OnEventSocketClose(pSocketCloseEvent);
73
74引擎是什么意思&nbs消息范文p;&nbs引擎盖p; &nbs事件研究法p; return;
75 &引擎nbsp; &接口类型nbsp; }
76 }
77
78消息的格式 //其他事件
79接口和抽象类的区别 m_pIAttemper消息免打扰是什么意思EngineSink->OnAttemperEvent(wIdentifier,pBuffer,wDataSize接口crc错误计数,dwInsertTime);
80
81 &n消息怎么写bsp; return;
82}
这个函数中一事件营销个很重要的参数:wIdentifier;
可以来追溯一下他的源头:
1//数据消息
2事件相互独立void CQueueService消息范文::OnQueueSer接口crc错误计数viceThread(const tagDataHead & DataHead,事件营销案例 void pBuffer, WORD wDataSize)
3{
4&消息已发出但被对方拒收什么意思nbsp; ASSERT(m_pIQueueServiceSink!=NULL);
5 try
6 {
7 m_pIQueueServiceSink->OnQueueServiceSink(DataHead.wIdentifier,pBuffer,DataHead.wDataSize,DataHead效验的意思.dwInsertTime);
8 }
9 &n消息提示音阿斗下载bsp; catch () {}
10 &nbs事件暴露法治意识缺位p; return;
11}
可以看见他是直接保存在最底效验读音层的那个DataStroage里边的,这个在上一章接口测试分析中可以看到效验读音。(个引擎利用CQueue效验读音ServiceEvent接口crc错误计数 Post数据的时候就携带了类接口型信息)
另外一个要注意的点是对s消息英语ocket事件的处理,我之前认为调度引擎组合了一个socket引擎是一个设计缺陷,应为这里的在处理socket消息免打扰是什么意思 read事件的时候如果异常了直接直接使用引擎来关闭socket而不是调用socket sink的指定接口。猜想也许是不希望客户端直接处理socket句柄吧,,还的选择科技。
|
|