DragonNest/Server/DNCashServer/DNSQLManager.cpp
2024-12-19 09:48:26 +08:00

129 lines
3.3 KiB
C++
Raw Blame History

#include "StdAfx.h"
#include "DNSQLManager.h"
#include "DNExtManager.h"
#include "Log.h"
extern TCashConfig g_Config;
CDNSQLManager *g_pSQLManager = NULL;
CDNSQLManager::CDNSQLManager(void)
{
Clear();
}
CDNSQLManager::~CDNSQLManager(void)
{
DestroyDB();
}
void CDNSQLManager::Clear()
{
memset(&m_pMembershipDBArray, 0, sizeof(m_pMembershipDBArray));
memset(&m_pWorldDBArray, 0, sizeof(m_pWorldDBArray));
}
bool CDNSQLManager::CreateMembershipDB()
{
CDNSQLMembership *pDB = NULL;
for (int i = 0; i < g_Config.nThreadMax; i++){
pDB = new CDNSQLMembership;
m_pMembershipDBArray[i] = pDB;
m_pMembershipDBArray[i]->m_cThreadID = i;
#if defined(_KRAZ)
if (!g_Config.bTestServer)
m_pMembershipDBArray[i]->SetMembershipDB();
#endif // #if defined(_KRAZ)
if (pDB->Connect(g_Config.MembershipDB.szIP, g_Config.MembershipDB.nPort, g_Config.MembershipDB.wszDBName, g_Config.MembershipDB.wszDBID) < 0){
g_Log.Log(LogType::_FILEDBLOG, L"Not Connect MembershipDB Ip:%S Port:%d DBName:%s DBID:%s \r\n", g_Config.MembershipDB.szIP, g_Config.MembershipDB.nPort, g_Config.MembershipDB.wszDBName, g_Config.MembershipDB.wszDBID);
SAFE_DELETE(pDB);
return false;
}
Sleep(1);
}
return true;
}
bool CDNSQLManager::CreateWorldDB()
{
int nWorldSetID = 0;
CDNSQLWorld *pDB = NULL;
for (int j = 0; j < g_Config.nWorldDBCount; j++){
for (int i = 0; i < g_Config.nThreadMax; i++){
nWorldSetID = g_Config.WorldDB[j].nWorldSetID;
pDB = new CDNSQLWorld;
m_pWorldDBArray[i][nWorldSetID - 1] = pDB;
m_pWorldDBArray[i][nWorldSetID - 1]->m_cThreadID = i;
m_pWorldDBArray[i][nWorldSetID - 1]->m_nWorldSetID = nWorldSetID;
#if defined(_KRAZ)
if (!g_Config.bTestServer)
m_pWorldDBArray[i][nWorldSetID - 1]->SetWorldDB();
#endif // #if defined(_KRAZ)
if (pDB->Connect(g_Config.WorldDB[j].szIP, g_Config.WorldDB[j].nPort, g_Config.WorldDB[j].wszDBName, g_Config.WorldDB[j].wszDBID) < 0){
g_Log.Log(LogType::_FILEDBLOG, L"Not Connect WorldDB Ip:%S Port:%d DBName:%s, DBID:%s \r\n", g_Config.WorldDB[j].szIP, g_Config.WorldDB[j].nPort, g_Config.WorldDB[j].wszDBName, g_Config.WorldDB[j].wszDBID);
SAFE_DELETE(pDB);
return false;
}
Sleep(100);
}
}
return true;
}
bool CDNSQLManager::CreateDB()
{
if (!CreateMembershipDB()) return false;
if (!CreateWorldDB()) return false;
// ij<><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD> <20><><EFBFBD>񿡼<EFBFBD> üũ
g_pExtManager->SetProhibitSaleList();
return true;
}
void CDNSQLManager::DestroyDB()
{
int i, j;
for (i = 0; i < g_Config.nThreadMax; i++){
SAFE_DELETE(m_pMembershipDBArray[i]);
}
for (i = 0; i < WORLDCOUNTMAX; i++){
for (j = 0; j < g_Config.nThreadMax; j++){
SAFE_DELETE(m_pWorldDBArray[j][i]);
}
}
Clear();
}
CDNSQLMembership* CDNSQLManager::FindMembershipDB(int nThreadIndex)
{
if ((nThreadIndex < 0) || (nThreadIndex >= g_Config.nThreadMax)) return NULL;
return m_pMembershipDBArray[nThreadIndex];
}
CDNSQLWorld* CDNSQLManager::FindWorldDB(int nThreadIndex, char cWorldSetID)
{
if ((cWorldSetID <= 0) || (cWorldSetID > WORLDCOUNTMAX)) return NULL;
if ((nThreadIndex < 0) || (nThreadIndex >= g_Config.nThreadMax)) return NULL;
return m_pWorldDBArray[nThreadIndex][cWorldSetID - 1];
}
CDNSQLWorld* CDNSQLManager::FindWorldDB(int nThreadIndex)
{
if ((nThreadIndex < 0) || (nThreadIndex >= g_Config.nThreadMax)) return NULL;
return m_pWorldDBArray[nThreadIndex][0];
}