第12章补充——具体程序代码 - search read.pudn.com.docVIP

第12章补充——具体程序代码 - search read.pudn.com.doc

  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文档。上传文档
查看更多
第12章补充——具体程序代码 - search read.pudn.com

第十二章补充——具体程序 // 因为DBS是运行于linux环境下的,所以main函数是console的形式 CGWSMgr g_GWSMgr; // 定义一个全局GameWorldServer管理类实例 int main(int argc, char* argv[]) { LOG(LV_M, DBServer Start ...); if(!g_GWSMgr.Init()) // 执行CGWSMgr的Init函数来初始化有关数据,建立监听socket等 { return 0; } int bRun = 1; while(bRun) // 执行CGWSMgr的Run函数来进行DBS的主体循环处理 { bRun = g_GWSMgr.Run(); } LOG(LV_M , DBServer Exit !); return 0; } // 下面定义游戏用到的数据表名 static const char CHARACTER_TB[] = cha_tb; // 角色表 static const char ITEM_TB[] = item_tb; // 道具表 static const char MAIL_TB[] = mail_tb; // 邮件表 …… // DBS自身基于来自Packet消息的调用, 这里的packet只是数据存放使用,并不一定来自网络消息 //之所以这样存放,是为了解析此类消息的时候,与解析网络消息的形式以及格式保持一致 enum DBS_MSG { _DBS_MSG_BASE = 5000, DBS_FACTION_CAL_EXP // 计算帮派总经验值的消息,是定时触发的 }; // 代表单个GWS的类CGWS class CGWS { private: int _nID;  // 预先分配好的ID, 在GWS登录DBS以后会赋值 int _nState; mapint , CGamePlayer* _PlayerIdx; // 玩家ID到数据指针的映射,方便查找 public: CGWS(); ~CGWS(); CMFTCPSession *m_Link; // 用来保持和GWS连接的socket // 下面是一些对Player数据的操作函数 void SetID(int nID); int GetID(); void SetState(int nState); void AddPlayer(CGamePlayer *pPlayer); bool RemovePlayer(int nID); void ClearPlayerList(); CGamePlayer* CheckPlayerOnline(int nID); CGamePlayer* GetPlayer(int nID); }; // 处理来自GWS的命令的统一的函数定义, 参数固定为2个, 1是GWS的指针, 标识消息来自于谁 // 2是数据包的packet指针,内含数据实际内容, 对于数据库服务器这样的应用程序,很适合使用类 // 似的函数定义方法来统一处理消息, 可以使代码结构清晰, 功能明确, 还可以方便的统计函数的 // 执行时间以评估对数据库操作的性能 typedef void (*GWS2DBSPROC)(CGWS *pGWS, CMFCmdPacket *pPacket); // 管理所有连接上DBS的GWS的类CGWSMgr // 也是最大,最关键的一个类,它控制了整个程序的运行流程 // 此类里面包含了很多static的变量和函数, 主要是基于用消息触发回调函数的需要, // 因为回调函数只能是全局的,如果想包含在类里面,就必须是static类型,它能存取 // 的变量也必须是static类型 class CGWSMgr { private: static CLog* _pL; static CDBMySql _DB; // 这是负责存取数据库的一个MySql接口类的实例 // 下面定义一些字符串数组, 作为生成以及存放sql语句字段,条件等等的公用内存 static string _strSQL; static char _szSQL[32768]; static char _szCon[256]; static char

文档评论(0)

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

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

1亿VIP精品文档

相关文档