databasemanager.old.cpp

来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 250 行

CPP
250
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : DatabaseManager.cpp// Written By  : elca@ewestsoft.com// Description ://////////////////////////////////////////////////////////////////////////////#include <stdio.h>#include "DatabaseManager.h"#include "Properties.h"#include "Utility.h"#include "Thread.h"#include "Timeval.h"#include "Result.h"#include "Statement.h"#include "Properties.h"DatabaseManager::DatabaseManager () 	throw(){	__BEGIN_TRY	m_Mutex.setName("DatabaseManager");	m_pDefaultConnection = NULL;	__END_CATCH}DatabaseManager::~DatabaseManager () 	throw (){	__BEGIN_TRY		// 葛电 Connection 甫 昏力秦具 茄促.	hash_map<int, Connection*>::iterator itr = m_Connections.begin();	for (; itr != m_Connections.end(); itr++)		SAFE_DELETE(itr->second);	// 秦浆甘救俊 乐绰 葛电 pair 甸阑 昏力茄促.	m_Connections.clear();	SAFE_DELETE(m_pDefaultConnection);	SAFE_DELETE(m_pUserInfoConnection);	__END_CATCH}void DatabaseManager::init ()	throw ( Error ){	__BEGIN_TRY	try 	{		string host     = g_pConfig->getProperty("DB_HOST");		string db       = g_pConfig->getProperty("DB_DB");		string user     = g_pConfig->getProperty("DB_USER");		string password = g_pConfig->getProperty("DB_PASSWORD");		m_pDefaultConnection = new Connection(host, db, user, password);		string uihost     = g_pConfig->getProperty("UI_DB_HOST");		string uidb       = g_pConfig->getProperty("UI_DB_DB");		string uiuser     = g_pConfig->getProperty("UI_DB_USER");		string uipassword = g_pConfig->getProperty("UI_DB_PASSWORD");		m_pUserInfoConnection = new Connection(uihost, uidb, uiuser, uipassword);		Statement * pStmt = NULL;		pStmt = m_pDefaultConnection->createStatement();		Result * pResult = NULL;		pResult = pStmt->executeQuery( "SELECT WorldID, Host, DB, User, Password FROM WorldDBInfo WHERE WorldID = 0" );		while( pResult->next() ) {			cout << "Connecting....... Another DB Server" << endl;			WorldID_t WorldID = pResult->getInt(1);			string whost = pResult->getString(2);			string wdb = pResult->getString(3);			string wuser = pResult->getString(4);			string wpassword = pResult->getString(5);			Connection * pConnection = new Connection(whost, wdb, wuser, wpassword);			m_pWorldDefaultConnection = pConnection;		}#ifdef __LOGIN_SERVER__		pResult = pStmt->executeQuery( "SELECT WorldID, Host, DB, User, Password FROM WorldDBInfo" );		while( pResult->next() ) {			cout << "Connecting....... Another DB Server" << endl;			WorldID_t WorldID = pResult->getInt(1);			string whost = pResult->getString(2);			string wdb = pResult->getString(3);			string wuser = pResult->getString(4);			string wpassword = pResult->getString(5);			Connection * pConnection = new Connection(whost, wdb, wuser, wpassword);			addConnection( WorldID , pConnection );		}#endif		SAFE_DELETE(pStmt);	} 	catch ( SQLConnectException & sce ) 	{		throw Error( sce.toString() );	}	__END_CATCH}void DatabaseManager::addConnection ( int TID,  Connection * pConnection ) 	throw ( DuplicatedException ){	__BEGIN_TRY	cout << "Adding TID connection BEGIN" << endl;	__ENTER_CRITICAL_SECTION(m_Mutex)	hash_map< int , Connection * >::iterator itr = m_Connections.find( TID );		if ( itr != m_Connections.end() )	{		cout << "duplicated connection info id" << endl;		throw DuplicatedException("duplicated connection info id");	}	m_Connections[ TID ] = pConnection;#ifdef __GAME_SERVER	// 霸烙 辑滚老 版快 阿 静饭靛 喊肺 World DB Connection捞 乐绰 版快啊 亮促.	Statement * pStmt = NULL;	pStmt = m_pDefaultConnection->createStatement();	Result * pResult = NULL;	pResult = pStmt->executeQuery( "SELECT WorldID, Host, DB, User, Password FROM WorldDBInfo WHERE WorldID = 0" );	while( pResult->next() ) {		cout << "Connecting....... Another DB Server" << endl;		WorldID_t WorldID = pResult->getInt(1);		string whost = pResult->getString(2);		string wdb = pResult->getString(3);		string wuser = pResult->getString(4);		string wpassword = pResult->getString(5);		Connection * pConnection = new Connection(whost, wdb, wuser, wpassword);		m_WorldConnections[ TID ] = pConnection;	}#endif	__LEAVE_CRITICAL_SECTION(m_Mutex)	cout << "Adding TID connection END" << endl;	__END_CATCH}	Connection * DatabaseManager::getConnection ( string connName ) 	throw ( NoSuchElementException ){	__BEGIN_TRY			Connection * pTempConnection = NULL;	hash_map<int, Connection*>::iterator itr = m_Connections.find(Thread::self());	if (itr == m_Connections.end())	{		pTempConnection = m_pDefaultConnection;	} 	else 	{		pTempConnection = itr->second;	}	return pTempConnection;	__END_CATCH}/*void DatabaseManager::addConnection ( WorldID_t WorldID,  Connection * pConnection ) 	throw ( DuplicatedException ){	__BEGIN_TRY	cout << "Adding World connection BEGIN" << endl;	__ENTER_CRITICAL_SECTION(m_Mutex)	hash_map< WorldID_t , Connection * >::iterator itr = m_WorldConnections.find( WorldID );		if ( itr != m_WorldConnections.end() )	{		cout << "duplicated connection info id" << endl;		throw DuplicatedException("duplicated connection info id");	}	m_WorldConnections[ WorldID ] = pConnection;	__LEAVE_CRITICAL_SECTION(m_Mutex)	cout << "Adding World connection END" << endl;	__END_CATCH}*/	Connection * DatabaseManager::getConnection ( int TID ) 	throw ( NoSuchElementException ){	__BEGIN_TRY			Connection * pTempConnection = NULL;#ifdef __GAME_SERVER__	pTempConnection = m_pWorldDefaultConnection;#elif __LOGIN_SERVER__	hash_map<int, Connection*>::iterator itr = m_WorldConnections.find(TID);	if (itr == m_WorldConnections.end())	{		pTempConnection = m_pWorldDefaultConnection;	} 	else 	{		pTempConnection = itr->second;	}#endif	return pTempConnection;	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// global variable definition//////////////////////////////////////////////////////////////////////////////DatabaseManager * g_pDatabaseManager = NULL;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?