[kbengine源代码读v0.0.2.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[kbengine源代码读v0.0.2

前言:v0.0.12015-04-10誉小痕(shawhen2012@)v0.0.22015-04-12誉小痕(mailto:shawhen2012@shawhen2012@)changelog请查看: /forum.php?mod=viewthreadtid=247extra=page%3D1/forum.php?mod=viewthreadtid=247extra=page%3D1新增内容以 **New in version x.x.x** 标示基于kbengine 0.4.20(现在和这份文档一起的有一个kbengine主干活动图,建议先看看那个图,参照图中的流程然后对照本文档理解流程的实现细节。活动图可在changelog帖子中找到下载地址)MMOG服务端是一种高品质的工程项目,品读开源的kbe是一种乐趣。本文档我带童鞋们一起领略一下。囿于我知识面和经验方面所限,文中所述之处难免有错误存在,还请读童鞋们睁大慧眼,如果你发现错误,可以 mailto:电邮至shawhen2012@电邮至shawhen2012@。(因为我个人懒散或者时间仓促的关系,这个文档的排版有点小乱。。。)其他牛逼哄哄的前言就不说了。从理论上来讲,我们阅读一份源代码,首先应该基于现有的文档从整体上把握项目的架构之后再庖丁解牛一般地细分阅读,不过在我写这个文档的现在,我暂时没发现这样的文档,所以我就按照我自己的阅读顺序从而编排这个文档的内容。概要:从已有的文档可知(我得假设你已经大致看完了kbe官网的现有文档),kbe由几个组件共同协作,所以我们先看看组件们:各个组件被设计为独立的app,使用网络通信进行协作。C++程序自然是从main函数开始。main函数的戏法:看起来似乎所有的组件都有一个这样的宏(KBENGINE_MAIN)来包裹main函数int KBENGINE_MAIN(int argc, char* argv[]){ENGINE_COMPONENT_INFO info = g_kbeSrvConfig.getXXX();return kbeMainTXXX(argc, argv, YYY, info.externalPorts_min, info.externalPorts_max, info.externalInterface, 0, ernalInterface);}这个宏展开是这样子:kbeMain(int argc, char* argv[]);\int main(int argc, char* argv[])\{\loadConfig();\g_componentID = genUUID64();\parseMainCommandArgs(argc, argv);\char dumpname[MAX_BUF] = {0};\kbe_snprintf(dumpname, MAX_BUF, %PRAppID, g_componentID);\KBEngine::exception::installCrashHandler(1, dumpname);\int retcode = -1;\THREAD_TRY_EXECUTION;\retcode = kbeMain(argc, argv);\THREAD_HANDLE_CRASH;\return retcode;\}\稍微整理一下之后main函数看起来很像是这个样子:int kbeMain(int argc, char* argv[]);int main(int argc, char* argv[]){ loadConfig(); g_componentID = genUUID64(); parseMainCommandArgs(argc, argv); char dumpname[MAX_BUF] = {0}; kbe_snprintf(dumpname, MAX_BUF, %PRAppID, g_componentID); KBEngine::exception::installCrashHandler(1, dumpname); int retcode = -1; THREAD_TRY_EXECUTION; retcode = kbeMain(argc, argv); THREAD_HANDLE_CRASH; return (retcode);}int kbeMain(int argc, char* argv[]){ ENGINE_COMPONENT_INFO info = g_kbeSrvConfig.getXXX(); return kbeMainTXXX(argc, argv, YYY, info.externalPorts_min, info.externalPorts_m

文档评论(0)

lisufan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档