⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gameserver.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 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 + -