gameservermanager.cpp
来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 209 行
CPP
209 行
////////////////////////////////////////////////////////////////////////// Filename : GameServerManager.cpp// Written By : Reiot// Description :////////////////////////////////////////////////////////////////////////#include "GameServerManager.h"#include "Properties.h"#include "Datagram.h"#include "DatagramPacket.h"#include <unistd.h>#include "DB.h"#include "Properties.h"#include "Lpackets/LGKickCharacter.h"//////////////////////////////////////////////////////////////////////// constructor//////////////////////////////////////////////////////////////////////GameServerManager::GameServerManager () throw ( Error ): m_pDatagramSocket(NULL){ __BEGIN_TRY // create datagram server socket m_pDatagramSocket = new DatagramSocket(g_pConfig->getPropertyInt("TheOneServerUDPPort") ); __END_CATCH}//////////////////////////////////////////////////////////////////////// destructor//////////////////////////////////////////////////////////////////////GameServerManager::~GameServerManager () throw ( Error ){ __BEGIN_TRY SAFE_DELETE( m_pDatagramSocket ); __END_CATCH}//////////////////////////////////////////////////////////////////////// main method//////////////////////////////////////////////////////////////////////void GameServerManager::run () throw (Error){ try { string host = g_pConfig->getProperty("DB_HOST"); string db = DB_DB; string user = DB_USER; string password = DB_PASSWORD; /* string db = g_pConfig->getProperty("DB_DB"); string user = g_pConfig->getProperty("DB_USER"); string password = g_pConfig->getProperty("DB_PASSWORD"); */ Connection* pConnection = new Connection(host, db, user, password); g_pDatabaseManager->addConnection((int)Thread::self(), pConnection); while ( m_bRunning ) { Datagram* pDatagram = NULL; DatagramPacket* pDatagramPacket = NULL; try { // 单捞磐弊伐 按眉甫 掺笼绢辰促. pDatagram = m_pDatagramSocket->receive(); if (pDatagram!=NULL) // 老何 exception力芭. by sigi. 2002.5.17 { // 单捞磐弊伐 菩哦 按眉甫 掺笼绢辰促. pDatagram->read( pDatagramPacket ); if (pDatagramPacket!=NULL) { // 掺笼绢辰 单捞磐弊伐 菩哦 按眉甫 角青茄促. pDatagramPacket->execute(NULL); // 单捞磐弊伐 菩哦 按眉甫 昏力茄促. SAFE_DELETE(pDatagramPacket); pDatagramPacket = NULL; } // 单捞磐弊伐 按眉甫 昏力茄促. SAFE_DELETE(pDatagram); pDatagram = NULL; } } catch ( ProtocolException & pe ) { cout << "GameServerManager::run Exception Check(ProtocolException)" << endl; cout << pe.toString() << endl; // 辑滚埃 烹脚俊辑 橇肺配妮 俊矾啊 惯积窍搁, // 橇肺弊贰怪 坷幅捞芭唱 秦欧 矫档捞促. // 老窜篮 傈磊父捞 秦寸登骨肺.. 俊矾肺 埃林茄促. //throw Error( pe.toString() ); SAFE_DELETE(pDatagramPacket); SAFE_DELETE(pDatagram); } catch ( ConnectException & ce ) { cout << "GameServerManager::run Exception Check(ConnectException)" << endl; cout << ce.toString() << endl; // 栏澜.. 赣瘤 捞扒.. // 老窜 俊矾寸.. //throw Error( ce.toString() ); SAFE_DELETE(pDatagramPacket); SAFE_DELETE(pDatagram); } catch ( Throwable & t ) { cout << "GameServerManager::run Exception Check(ConnectException)" << endl; cout << t.toString() << endl; SAFE_DELETE(pDatagramPacket); SAFE_DELETE(pDatagram); } usleep(100); } cout << "GameServerManager thread exiting... " << endl; //::exit(1); } catch ( Throwable & t ) { cout << "GameServerManager thread exiting... : " << t.toString() << endl; }}//////////////////////////////////////////////////////////////////////// send datagram to datagram-socket//////////////////////////////////////////////////////////////////////void GameServerManager::sendDatagram ( Datagram * pDatagram ) throw ( ConnectException , Error ){ __BEGIN_TRY try { m_pDatagramSocket->send( pDatagram ); } catch ( ConnectException & t ) { cout << "GameServerManager::sendDatagram Exception Check!!" << endl; cout << t.toString() << endl; throw ConnectException( "GameServerManager::sendDatagram 惑困肺 带柳促"); } __END_CATCH}//////////////////////////////////////////////////////////////////////// send datagram-packet to datagram-socket//////////////////////////////////////////////////////////////////////void GameServerManager::sendPacket ( string host , uint port , DatagramPacket * pPacket ) throw ( ConnectException , Error ){ __BEGIN_TRY __BEGIN_DEBUG try {// try // { // 单捞磐弊伐 按眉甫 窍唱 滴绊, 傈价且 peer 狼 龋胶飘客 器飘甫 瘤沥茄促. Datagram datagram; datagram.setHost(host); datagram.setPort(port); // 单捞磐弊伐 菩哦阑 单捞磐弊伐俊 笼绢持绰促. datagram.write(pPacket); // 单捞磐弊伐 家南阑 烹秦辑 单捞磐弊伐阑 傈价茄促. m_pDatagramSocket->send( &datagram );// }// catch ( ConnectException & t ) // {// cout << "GameServerManager::sendDatagram Exception Check!!" << endl;// cout << t.toString() << endl;// throw ConnectException( "GameServerManager::sendDatagram 惑困肺 带柳促");// } } catch ( Throwable & t ) { cout << "====================================================================" << endl; cout << t.toString() << endl; cout << "====================================================================" << endl; } __END_DEBUG __END_CATCH}// global variable definitionGameServerManager * g_pGameServerManager = NULL;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?