kbengine源代码读 v0.0.1

kbengine源代码读 v0.0.1

ID:40557926

大小:63.20 KB

页数:19页

时间:2019-08-04

kbengine源代码读 v0.0.1_第1页
kbengine源代码读 v0.0.1_第2页
kbengine源代码读 v0.0.1_第3页
kbengine源代码读 v0.0.1_第4页
kbengine源代码读 v0.0.1_第5页
资源描述:

《kbengine源代码读 v0.0.1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于kbengine0.4.20MMOG服务端是一种高品质的工程项目,品读开源的kbe是一种乐趣。本文档我带童鞋们一起领略一下。囿于我知识面和经验方面所限,文中所述之处难免有错误存在,还请读童鞋们睁大慧眼,如果你发现错误,可以电邮至shawhen2012@hotmail.com。(因为我个人懒散或者时间仓促的关系,这个文档的排版有点小乱。。。)其他牛逼哄哄的前言就不说了。从理论上来讲,我们阅读一份源代码,首先应该基于现有的文档从整体上把握项目的架构之后再庖丁解牛一般地细分阅读,不过在我写这个文档的现在,我暂时没发现这样的文档,所以我就按照我自己的阅读顺序从而编排这个文档的内容。从已有

2、的文档可知(我得假设你已经大致看完了kbe官网的现有文档),kbe由几个组件共同协作,所以我们先看看组件们:各个组件被设计为独立的app,使用网络通信进行协作。C++程序自然是从main函数开始。看起来似乎所有的组件都有一个这样的宏(KBENGINE_MAIN)来包裹main函数intKBENGINE_MAIN(intargc,char*argv[]){ENGINE_COMPONENT_INFO&info=g_kbeSrvConfig.getXXX();returnkbeMainT(argc,argv,YYY,info.externalPorts_min,info.exte

3、rnalPorts_max,info.externalInterface,0,info.internalInterface);}这个宏展开是这样子:kbeMain(intargc,char*argv[]);intmain(intargc,char*argv[]){loadConfig();g_componentID=genUUID64();parseMainCommandArgs(argc,argv);chardumpname[MAX_BUF]={0};kbe_snprintf(dumpname,MAX_BUF,"%"PRAppID,g_componentID);KB

4、Engine::exception::installCrashHandler(1,dumpname);intretcode=-1;THREAD_TRY_EXECUTION;retcode=kbeMain(argc,argv);THREAD_HANDLE_CRASH;returnretcode;}稍微整理一下之后很像是这个样子:intkbeMain(intargc,char*argv[]);intmain(intargc,char*argv[]){loadConfig();g_componentID=genUUID64();parseMainCommandArgs(arg

5、c,argv);chardumpname[MAX_BUF]={0};kbe_snprintf(dumpname,MAX_BUF,"%"PRAppID,g_componentID);KBEngine::exception::installCrashHandler(1,dumpname);intretcode=-1;THREAD_TRY_EXECUTION;retcode=kbeMain(argc,argv);THREAD_HANDLE_CRASH;return(retcode);}intkbeMain(intargc,char*argv[]){ENGINE_COMPONENT_INFO

6、&info=g_kbeSrvConfig.getXXX();returnkbeMainT(argc,argv,YYY,info.externalPorts_min,info.externalPorts_max,info.externalInterface,0,info.internalInterface);}嗯。。。基本可以理解为每个组件的main函数流程都是一样的,只是在特化kbeMainT时所给参数不一样。我们跟着main函数的loadConfig进去看看(kbemain.h)inlinevoidloadConfig(){Resmgr::getSingleton().i

7、nitialize();//"../../res/server/kbengine_defs.xml"g_kbeSrvConfig.loadConfig("server/kbengine_defs.xml");//"../../../assets/res/server/kbengine.xml"g_kbeSrvConfig.loadConfig("server/kbengine.xml");}在serverconfig.h中可以看到这样的代码:#define

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。