130 lines
3.3 KiB
C++
130 lines
3.3 KiB
C++
|
|
#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];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|