📄 gameserver.cpp
字号:
//////////////////////////////////////////////////////////////////////////////// Filename : GameServer.cpp // Written By : reiot@ewestsoft.com// Description ://////////////////////////////////////////////////////////////////////////////#include <time.h>#include <signal.h>#include <unistd.h>#include "GameServer.h"#include "Assert.h"#include "ThreadManager.h"#include "ClientManager.h"#include "ObjectManager.h"#include "LoginServerManager.h"#include "SharedServerManager.h"#include "LogClient.h"#include "SystemAPI.h"#include "PacketFactoryManager.h"#include "PacketValidator.h"#include "DatabaseManager.h"#include "GameServerInfoManager.h"#include "SharedServerManager.h"#include "BillingPlayerManager.h"#include "GameServerTester.h"#include "chinabilling/CBillingInfo.h"#ifdef __CONNECT_CBILLING_SYSTEM__ #include "chinabilling/CBillingPlayerManager.h"#endif////////////////////////////////////////////////////////////////////////////////// constructor////////////////////////////////////////////////////////////////////////////////GameServer::GameServer () throw (Error){ __BEGIN_TRY try { // create database manager g_pDatabaseManager = new DatabaseManager(); // create object manager g_pObjectManager = new ObjectManager(); // create packet factory manager , packet validator g_pPacketFactoryManager = new PacketFactoryManager(); g_pPacketValidator = new PacketValidator(); // create thread manager g_pThreadManager = new ThreadManager(); // create login server manager g_pLoginServerManager = new LoginServerManager(); // create shared server manager g_pSharedServerManager = new SharedServerManager(); // create billing player manager#ifdef __CONNECT_BILLING_SYSTEM__ g_pBillingPlayerManager = new BillingPlayerManager();#endif // create china billing player manager#ifdef __CONNECT_CBILLING_SYSTEM__ g_pCBillingPlayerManager = new CBillingPlayerManager();#endif // create client manager g_pClientManager = new ClientManager(); // create login server manager g_pGameServerInfoManager = new GameServerInfoManager(); } catch (Throwable & t) { //cout << t.toString() << endl; throw; } __END_CATCH}//////////////////////////////////////////////////////////////////////////////// destructor// stop()阑 芭摹瘤 臼绊 霸烙 辑滚啊 辆丰登绰 巴阑 眉农秦拎具 茄促.//////////////////////////////////////////////////////////////////////////////GameServer::~GameServer () throw (Error){ __BEGIN_TRY SAFE_DELETE(g_pClientManager); SAFE_DELETE(g_pObjectManager); SAFE_DELETE(g_pPacketValidator); SAFE_DELETE(g_pPacketFactoryManager); SAFE_DELETE(g_pLoginServerManager); SAFE_DELETE(g_pSharedServerManager);#ifdef __CONNECT_BILLING_SYSTEM__ SAFE_DELETE(g_pBillingPlayerManager);#endif#ifdef __CONNECT_CBILLING_SYSTEM__ SAFE_DELETE(g_pCBillingPlayerManager);#endif SAFE_DELETE(g_pGameServerInfoManager); SAFE_DELETE(g_pThreadManager); SAFE_DELETE(g_pDatabaseManager); __END_CATCH}//////////////////////////////////////////////////////////////////////////////// initialize game server//////////////////////////////////////////////////////////////////////////////void GameServer::init () throw (Error){ __BEGIN_TRY sysinit(); cout << "GameServer::init() : System Initialization Success..." << endl; // gCurrentTime阑 技泼茄促. setCurrentTime(); // 单捞鸥海捞胶概聪历甫 檬扁拳茄促. g_pDatabaseManager->init(); cout << "GameServer::init() : DatabaseManager Initialization Success..." << endl; // 单捞鸥海捞胶概聪历甫 烹秦辑 坷宏璃飘概聪历甫 檬扁拳茄促. g_pObjectManager->init(); g_pObjectManager->load(); cout << "GameServer::init() : ObjectManager Initialization Success..." << endl; // 坷宏璃飘 概聪历甫 扁馆栏肺 静饭靛概聪历甫 檬扁拳茄促. // (漂洒 ZoneThreadPool篮 ZoneGroupManager啊 刚历 檬扁拳登绢具 茄促. g_pThreadManager->init(); cout << "GameServer::init() : ThreadManager Initialization Success..." << endl; // 努扼捞攫飘概聪历甫 檬扁拳窍扁 傈俊, 菩哦蒲配府概聪历/菩哦惯府单捞磐甫 檬扁拳茄促. g_pPacketFactoryManager->init(); cout << "GameServer::init() : PacketFactoryManager Initialization Success..." << endl; g_pPacketValidator->init(); cout << "GameServer::init() : PacketValidator Initialization Success..." << endl; // 捞力 辑滚埃 烹脚 霖厚俊 甸绢埃促. g_pLoginServerManager->init(); cout << "GameServer::init() : LoginServerManager Initialization Success..." << endl; // shared server 客狼 烹脚 霖厚俊 甸绢埃促. g_pSharedServerManager->init(); cout << "GameServer::init() : SharedServerManager Initialization Success..." << endl;#ifdef __CONNECT_BILLING_SYSTEM__ // shared server 客狼 烹脚 霖厚俊 甸绢埃促. g_pBillingPlayerManager->init(); cout << "GameServer::init() : BillingPlayerManager Initialization Success..." << endl;#endif#ifdef __CONNECT_CBILLING_SYSTEM__ // china billing server 客狼 烹脚 霖厚俊 甸绢埃促. g_pCBillingPlayerManager->init(); cout << "GameServer::init() : CBillingPlayerManager Initialization Success..." << endl;#endif g_pGameServerInfoManager->init(); cout << "GameServer::init() : GameServerInfoManager Initialization Success..." << endl; // 父馆狼 霖厚啊 场捞 唱搁 捞力 努扼捞攫飘概聪历甫 檬扁拳窃栏肺结, // 匙飘况欧俊 措厚茄促. g_pClientManager->init(); cout << "GameServer::init() : ClientManager Initialization Success..." << endl; // 檬扁拳啊 场捞 唱搁, 能贾 免仿阑 肛眠绊 归弊扼款靛肺 甸绢埃促. //goBackground(); __END_CATCH}//////////////////////////////////////////////////////////////////////////////// start game server//////////////////////////////////////////////////////////////////////////////void GameServer::start () throw (Error){ __BEGIN_TRY cout << ">>> STARTING THREAD MANAGER..." << endl; g_pThreadManager->start(); cout << ">>> STARTING LOGIN SERVER MANAGER..." << endl; g_pLoginServerManager->start(); cout << ">>> STARTING SHARED SERVER MANAGER..." << endl; g_pSharedServerManager->start();#ifdef __CONNECT_BILLING_SYSTEM__ cout << ">>> STARTING BILLING PLAYER MANAGER..." << endl; g_pBillingPlayerManager->start();#endif#ifdef __CONNECT_CBILLING_SYSTEM__ cout << ">>> STARTING CBILLING PLAYER MANAGER..." << endl; g_pCBillingPlayerManager->start();#endif // 努扼捞攫飘 概聪历甫 矫累茄促. // *Reiot's Notes* // 啊厘 唱吝俊 角青登绢具 茄促. 恐衬窍搁 钢萍静饭靛扁馆捞 酒囱 // 公茄风橇甫 啊柳 窃荐捞扁 锭巩捞促. 父老 捞 促澜俊 促弗 窃荐甫 // 龋免且 版快, 风橇啊 场唱瘤 臼绰茄(溜 俊矾啊 惯积窍瘤 臼绰茄) // 角青登瘤 臼绰促. cout << ">>> ALL INITIALIZATIONS ARE COMPLETED SUCCESSFULLY." << endl; cout << ">>> STARTING ClientManager->start() INFINITE LOOP..." << endl; log(LOG_SYSTEM, "", "", "Game Server Started"); // 抛胶飘 by sigi. 2002.12.26 if (g_pTestConfig!=NULL) { testGameServer(); } try { g_pClientManager->start(); } catch (Throwable& t) { filelog("GameServerError.txt", "%s", t.toString().c_str()); throw; } __END_CATCH}//////////////////////////////////////////////////////////////////////////////// stop game server//// stop 鉴辑俊 蜡狼窍档废 窍磊. 啊厘 康氢阑 腹捞 林绰 概聪历何磐// stop 矫难具 茄促. 父老 馆措狼 鉴辑肺 stop 矫懦 版快 null pointer// 鞍篮 泅惑捞 惯积且 荐 乐促.//// 蝶扼辑, 静饭靛 包访 概聪历何磐 昏力秦具 茄促.//////////////////////////////////////////////////////////////////////////////void GameServer::stop () throw (Error){ __BEGIN_TRY // // stop client manager // // 啊厘 刚历 努扼捞攫飘 概聪历甫 昏力矫糯栏肺结 歹捞惑 货 立加阑 // 罐瘤 臼档废 茄促. // g_pClientManager->stop(); // // stop thread manager // // 弊促澜, 静饭靛概聪历甫 昏力窃栏肺结 扁粮狼 荤侩磊甸阑 歹捞惑 贸府窍瘤 // 臼绊 霸烙 辑滚俊辑 卵酒辰促. 捞锭 静饭靛 概聪历狼 窍困 静饭靛钱俊辑 // stop阑 角青且锭 利例窍霸 肋 登绢具 茄促. // g_pThreadManager->stop(); // // stop object manager // // 捞力 葛电 荤侩磊甸狼 立加捞 辆丰登菌栏骨肺, 巢篮 粮 棺 咯矾 啊瘤 霸烙 // 券版甸阑 单捞鸥海捞胶肺 历厘窍档废 茄促. // //g_pObjectManager->save(); __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 矫胶袍 饭骇狼 檬扁拳//////////////////////////////////////////////////////////////////////////////void GameServer::sysinit() throw (Error){ __BEGIN_TRY // rand() 甫 困茄 檬扁拳 srand(time(0)); signal(SIGPIPE , SIG_IGN); // 捞芭绰 辆辆 惯积且 淀 signal(SIGALRM , SIG_IGN); // 舅恩 窍绰 版快绰 决蝶, 抗狼惑 signal(SIGCHLD , SIG_IGN); // fork 窍绰 版快绰 决蝶, 抗狼惑 __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 唱吝俊 能贾肺 免仿且 鞘夸啊 绝绢龙 父怒 救沥利捞 登搁, // 捞 窃荐甫 龋免窍档废 茄促.//////////////////////////////////////////////////////////////////////////////void GameServer::goBackground () throw (Error){ __BEGIN_TRY int forkres = SystemAPI::fork_ex(); if (forkres == 0) { // case of child process close(0); close(1); close(2); } else { // case of parent process exit(0); } __END_CATCH}//////////////////////////////////////////////////////////////////////////////// global variable declaration//////////////////////////////////////////////////////////////////////////////GameServer* g_pGameServer = NULL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -