快捷导航
网站首页
疑难问答
Foreign
手游源码
端游源码
页游源码
手游单机
开启辅助访问
登录
or
注册
永久会员提供整站资源下载
游戏源码
»
源码论坛 BBS
›
疑难问答
›
用户交流
›
网狐棋牌(三) 调度引擎初步分析(1)
返回列表
查看:
301
|
回复:
1
网狐棋牌(三) 调度引擎初步分析(1)
[复制链接]
bcsx
bcsx
当前离线
积分
199
7
主题
34
帖子
199
积分
vip会员
vip会员, 积分 199, 距离下一级还需 9801 积分
vip会员, 积分 199, 距离下一级还需 9801 积分
积分
199
发消息
发表于 2020-3-27 16:09:29
|
显示全部楼层
|
阅读模式
CAttempterEngine实现了两个接口:IQueueServiceSink、IAttemperEngine;
通过前面的分析,偶们了解到,IQueueServiceSink这个接口被是用来处理CQueueService中的数据的,根据上面的UML我们可以看到,CAttemperEngine关联了一个CQueueService(或者直接点说是:持有了一个CQueueService对象,说组合也成)。这样的话这个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(IUnknownEx * pIUnknownEx);
9
//
获取接口
10
virtual
void
* __cdecl GetQueueService(
const
IID & Guid, DWORD dwQueryVer);
这个接口有两处值得单独讨论的:SetSocketEngine、GetQueueService;
SetSocketEngine,后面的分析中还会出现,我觉得这里是一个设计上的失误导致需要暴露socket引擎接口;
GetQueueService的设计思路可能是说,每个IAttemperEngine接口背后都有一个CQueueService,从以后的分析中可以看到,这个思路是理解整个kernel的关键。调度引擎应该是一个消息汇总(从个个引擎产生的消息)然后派发到IAttemperEngineSink。因为代码中是没有看到有关ITimerSink ISocketSink之类的东东的,,,
整个消息是个引擎产生,然后投递到指定的CQueueService,然后汇总到这里被派发到IAttemperEngineSink出去的,,,
回复
使用道具
举报
返回列表
*
滑块验证:
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
enginedx注册
本版积分规则
发表回复
回帖后跳转到最后一页
邮件留言:
游戏源码
返回顶部