查看: 300|回复: 1

网狐棋牌(三) 调度引擎初步分析(1)

[复制链接]

7

主题

34

帖子

199

积分

vip会员

Rank: 1

积分
199
发表于 2020-3-27 16:09:29 | 显示全部楼层 |阅读模式
CAttempterEngine实现了两个接口:IQueueServiceSink、IAttemperEngine;
通过前面的分析,偶们了解到,IQueueServiceSink这个接口被是用来处理CQueueService中的数据的,根据上面的UML我们可以看到,CAttemperEngine关联了一个CQueueService(或者直接点说是:持有了一个CQueueService对象,说组合也成)。这样的话这个CAttemperEngine暴露出来的接口就只剩下IAttemperEnging了。


1 网狐棋牌(三) 调度引擎初步分析(1)  // 启动服务
2 网狐棋牌(三) 调度引擎初步分析(1)  virtual  bool __cdecl StartService();
3 网狐棋牌(三) 调度引擎初步分析(1)  // 停止服务
4 网狐棋牌(三) 调度引擎初步分析(1)  virtual  bool __cdecl StopService();
5 网狐棋牌(三) 调度引擎初步分析(1)  // 设置网络
6 网狐棋牌(三) 调度引擎初步分析(1)  virtual  bool __cdecl SetSocketEngine(IUnknownEx * pIUnknownEx);
7 网狐棋牌(三) 调度引擎初步分析(1)  // 注册钩子
8 网狐棋牌(三) 调度引擎初步分析(1)  virtual  bool __cdecl SetAttemperEngineSink(IUnknownEx * pIUnknownEx);
9 网狐棋牌(三) 调度引擎初步分析(1)  // 获取接口
10 网狐棋牌(三) 调度引擎初步分析(1)  virtual  void * __cdecl GetQueueService( const IID & Guid, DWORD dwQueryVer);


这个接口有两处值得单独讨论的:SetSocketEngine、GetQueueService;
SetSocketEngine,后面的分析中还会出现,我觉得这里是一个设计上的失误导致需要暴露socket引擎接口;
GetQueueService的设计思路可能是说,每个IAttemperEngine接口背后都有一个CQueueService,从以后的分析中可以看到,这个思路是理解整个kernel的关键。调度引擎应该是一个消息汇总(从个个引擎产生的消息)然后派发到IAttemperEngineSink。因为代码中是没有看到有关ITimerSink  ISocketSink之类的东东的,,,
整个消息是个引擎产生,然后投递到指定的CQueueService,然后汇总到这里被派发到IAttemperEngineSink出去的,,,

回复

使用道具 举报

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

本版积分规则

 
 



邮件留言:


 
返回顶部