Files
wnmj/Servers/服务器组件/模块管理/ServerInfoManager.cpp

1325 lines
40 KiB
C++
Raw Normal View History

2026-02-13 14:34:15 +08:00
#include "StdAfx.h"
#include "ModuleDBParameter.h"
#include "ServerInfoManager.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CServerInfoBuffer::CServerInfoBuffer()
{
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CServerInfoBuffer::~CServerInfoBuffer()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wServerID=0;
tagGameServerInfo * pGameServerInfo=NULL;
POSITION Position=m_GameServerInfoMap.GetStartPosition();
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while (Position!=NULL)
{
m_GameServerInfoMap.GetNextAssoc(Position,wServerID,pGameServerInfo);
SafeDelete(pGameServerInfo);
}
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (INT_PTR i=0;i<m_GameServerInfoArray.GetCount();i++)
{
pGameServerInfo=m_GameServerInfoArray[i];
SafeDelete(pGameServerInfo);
}
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_GameServerInfoMap.RemoveAll();
m_GameServerInfoArray.RemoveAll();
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CServerInfoBuffer::ResetServerInfo()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wServerID=0;
tagGameServerInfo * pGameServerInfo=NULL;
POSITION Position=m_GameServerInfoMap.GetStartPosition();
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while (Position!=NULL)
{
m_GameServerInfoMap.GetNextAssoc(Position,wServerID,pGameServerInfo);
m_GameServerInfoArray.Add(pGameServerInfo);
}
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_GameServerInfoMap.RemoveAll();
return true;
}
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CServerInfoBuffer::DeleteServerInfo(WORD wServerID)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameServerInfo * pGameServerInfo=NULL;
if (m_GameServerInfoMap.Lookup(wServerID,pGameServerInfo)==FALSE) return false;
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_GameServerInfoMap.RemoveKey(wServerID);
m_GameServerInfoArray.Add(pGameServerInfo);
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
ZeroMemory(pGameServerInfo,sizeof(tagGameServerInfo));
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CServerInfoBuffer::InsertServerInfo(tagGameServerInfo * pGameServerInfo)
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(pGameServerInfo!=NULL);
if (pGameServerInfo==NULL) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>
WORD wServerID=pGameServerInfo->wServerID;
tagGameServerInfo * pGameServerInsert=SearchServerInfo(wServerID);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
if (pGameServerInsert==NULL)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pGameServerInsert=CreateServerInfo();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
if (pGameServerInsert==NULL)
{
ASSERT(FALSE);
return false;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_GameServerInfoMap[wServerID]=pGameServerInsert;
CopyMemory(pGameServerInsert,pGameServerInfo,sizeof(tagGameServerInfo));
return true;
}
//<2F><>ȡ<EFBFBD><C8A1>Ŀ
DWORD CServerInfoBuffer::GetServerInfoCount()
{
return (DWORD)(m_GameServerInfoMap.GetCount());
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameServerInfo * CServerInfoBuffer::SearchServerInfo(WORD wServerID)
{
tagGameServerInfo * pGameServerInfo=NULL;
m_GameServerInfoMap.Lookup(wServerID,pGameServerInfo);
return pGameServerInfo;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameServerInfo * CServerInfoBuffer::CreateServerInfo()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameServerInfo * pGameServerInfo=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
try
{
INT_PTR nArrayCount=m_GameServerInfoArray.GetCount();
if (nArrayCount>0)
{
pGameServerInfo=m_GameServerInfoArray[nArrayCount-1];
m_GameServerInfoArray.RemoveAt(nArrayCount-1);
}
else
{
pGameServerInfo=new tagGameServerInfo;
if (pGameServerInfo==NULL) return NULL;
}
}
catch (...) { return false; }
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
ZeroMemory(pGameServerInfo,sizeof(tagGameServerInfo));
return pGameServerInfo;
}
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CMatchOptionBuffer::CMatchOptionBuffer()
{
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMatchOptionBuffer::~CMatchOptionBuffer()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameMatchOption * pGameMatchOption=NULL;
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_GameMatchOptionBuffer.Append(m_GameMatchOptionArray);
for (INT_PTR i=0;i<m_GameMatchOptionBuffer.GetCount();i++)
{
pGameMatchOption=m_GameMatchOptionBuffer[i];
SafeDelete(pGameMatchOption);
}
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_GameMatchOptionArray.RemoveAll();
m_GameMatchOptionBuffer.RemoveAll();
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CMatchOptionBuffer::ResetMatchOption()
{
//<2F><><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>
m_GameMatchOptionBuffer.Append(m_GameMatchOptionArray);
//ɾ<><C9BE>Ԫ<EFBFBD><D4AA>
m_GameMatchOptionArray.RemoveAll();
return true;
}
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CMatchOptionBuffer::DeleteMatchOption(DWORD dwMatchID,DWORD wMatchNO)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameMatchOption * pGameMatchOption=NULL;
//<2F><><EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD>
for(INT_PTR i=0;i<m_GameMatchOptionArray.GetCount();i++)
{
pGameMatchOption=m_GameMatchOptionArray[i];
if(pGameMatchOption->dwMatchID==dwMatchID && pGameMatchOption->dwMatchNO==wMatchNO)
{
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_GameMatchOptionArray.RemoveAt(i);
m_GameMatchOptionBuffer.Add(pGameMatchOption);
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
ZeroMemory(pGameMatchOption,sizeof(tagGameMatchOption));
break;
}
}
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CMatchOptionBuffer::InsertMatchOption(tagGameMatchOption * pGameMatchOption)
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(pGameMatchOption!=NULL);
if (pGameMatchOption==NULL) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>
tagGameMatchOption * pGameMatchInsert=SearchMatchOption(pGameMatchOption->dwMatchID,pGameMatchOption->dwMatchNO);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
if (pGameMatchInsert==NULL)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pGameMatchInsert=CreateMatchOption();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
if (pGameMatchInsert==NULL)
{
ASSERT(FALSE);
return false;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_GameMatchOptionArray.Add(pGameMatchInsert);
CopyMemory(pGameMatchInsert,pGameMatchOption,sizeof(tagGameMatchOption));
return true;
}
//<2F><>ȡ<EFBFBD><C8A1>Ŀ
DWORD CMatchOptionBuffer::GetMatchOptionCount()
{
return (DWORD)(m_GameMatchOptionArray.GetCount());
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameMatchOption * CMatchOptionBuffer::SearchMatchOption(DWORD dwMatchID,DWORD wMatchNO)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameMatchOption * pGameMatchOption=NULL;
//<2F><><EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD>
for(INT_PTR i=0;i<m_GameMatchOptionArray.GetCount();i++)
{
pGameMatchOption=m_GameMatchOptionArray[i];
if(pGameMatchOption->dwMatchID==dwMatchID && pGameMatchOption->dwMatchNO==wMatchNO)
{
return pGameMatchOption;
}
}
return NULL;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameMatchOption * CMatchOptionBuffer::CreateMatchOption()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameMatchOption * pGameMatchOption=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
try
{
INT_PTR nArrayCount=m_GameMatchOptionBuffer.GetCount();
if (nArrayCount>0)
{
pGameMatchOption=m_GameMatchOptionBuffer[nArrayCount-1];
m_GameMatchOptionBuffer.RemoveAt(nArrayCount-1);
}
else
{
pGameMatchOption=new tagGameMatchOption;
if (pGameMatchOption==NULL) return NULL;
}
}
catch (...) { return false; }
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
ZeroMemory(pGameMatchOption,sizeof(tagGameMatchOption));
return pGameMatchOption;
}
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CServerInfoManager::CServerInfoManager()
{
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CServerInfoManager::~CServerInfoManager()
{
}
//<2F><><EFBFBD>ط<EFBFBD><D8B7><EFBFBD>
bool CServerInfoManager::LoadGameServerInfo(TCHAR szMachineID[LEN_MACHINE_ID], CServerInfoBuffer & ServerInfoBuffer)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDataBaseAide PlatformDBAide;
CDataBaseHelper PlatformDBModule;
//ִ<><D6B4><EFBFBD>߼<EFBFBD>
try
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
if (ConnectPlatformDB(PlatformDBModule)==false)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface());
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PlatformDBAide.ResetParameter();
PlatformDBAide.AddParameter(TEXT("@wServerID"),0);
PlatformDBAide.AddParameter(TEXT("@strServiceMachine"),szMachineID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
TCHAR szDescribeString[128]=TEXT("");
PlatformDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput);
//<2F><>ȡ<EFBFBD>б<EFBFBD>
if (PlatformDBAide.ExecuteProcess(TEXT("GSP_GS_LoadGameRoomItem"),true)!=DB_SUCCESS)
{
//<2F><>ȡ<EFBFBD><C8A1>Ϣ
PlatformDBAide.GetParameter(TEXT("@strErrorDescribe"),szDescribeString,CountArray(szDescribeString));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
CTraceService::TraceString(szDescribeString,TraceLevel_Exception);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
AfxMessageBox(szDescribeString,MB_ICONERROR);
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
ServerInfoBuffer.ResetServerInfo();
//<2F><>ȡ<EFBFBD>б<EFBFBD>
while (PlatformDBModule->IsRecordsetEnd()==false)
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
tagGameServerInfo GameServerResult;
ReadGameServerInfo(PlatformDBAide,GameServerResult);
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
ServerInfoBuffer.InsertServerInfo(&GameServerResult);
//<2F>ƶ<EFBFBD><C6B6><EFBFBD>¼
PlatformDBModule->MoveToNext();
}
return true;
}
catch (IDataBaseException * pIException)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
LPCTSTR pszDescribe=pIException->GetExceptionDescribe();
CTraceService::TraceString(pszDescribe,TraceLevel_Exception);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
AfxMessageBox(pszDescribe,MB_ICONERROR);
return false;
}
return false;
}
//<2F><><EFBFBD>ط<EFBFBD><D8B7><EFBFBD>
bool CServerInfoManager::LoadGameServerInfo(TCHAR szMachineID[LEN_MACHINE_ID], WORD wServerID, tagGameServerInfo & GameServerResult)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDataBaseAide PlatformDBAide;
CDataBaseHelper PlatformDBModule;
//ִ<><D6B4><EFBFBD>߼<EFBFBD>
try
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
if (ConnectPlatformDB(PlatformDBModule)==false)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface());
//<2F><>ȡ<EFBFBD>б<EFBFBD>
PlatformDBAide.ResetParameter();
PlatformDBAide.AddParameter(TEXT("@wServerID"),wServerID);
PlatformDBAide.AddParameter(TEXT("@strServiceMachine"),szMachineID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
TCHAR szDescribeString[128]=TEXT("");
PlatformDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput);
//<2F><>ȡ<EFBFBD>б<EFBFBD>
if (PlatformDBAide.ExecuteProcess(TEXT("GSP_GS_LoadGameRoomItem"),true)!=DB_SUCCESS)
{
//<2F><>ȡ<EFBFBD><C8A1>Ϣ
PlatformDBAide.GetParameter(TEXT("@strErrorDescribe"),szDescribeString,CountArray(szDescribeString));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
CTraceService::TraceString(szDescribeString,TraceLevel_Exception);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
AfxMessageBox(szDescribeString,MB_ICONERROR);
return false;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
if (PlatformDBModule->IsRecordsetEnd()==false)
{
ReadGameServerInfo(PlatformDBAide,GameServerResult);
return true;
}
return false;
}
catch (IDataBaseException * pIException)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
LPCTSTR pszDescribe=pIException->GetExceptionDescribe();
CTraceService::TraceString(pszDescribe,TraceLevel_Exception);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
AfxMessageBox(pszDescribe,MB_ICONERROR);
return false;
}
return false;
}
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CServerInfoManager::DeleteGameServer(WORD wServerID)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDataBaseAide PlatformDBAide;
CDataBaseHelper PlatformDBModule;
//ִ<><D6B4><EFBFBD>߼<EFBFBD>
try
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
if (ConnectPlatformDB(PlatformDBModule)==false)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface());
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PlatformDBAide.ResetParameter();
PlatformDBAide.AddParameter(TEXT("@wServerID"),wServerID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
TCHAR szDescribeString[128]=TEXT("");
PlatformDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput);
//ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (PlatformDBAide.ExecuteProcess(TEXT("GSP_GS_DeleteGameRoom"),false)!=DB_SUCCESS)
{
//<2F><>ȡ<EFBFBD><C8A1>Ϣ
PlatformDBAide.GetParameter(TEXT("@strErrorDescribe"),szDescribeString,CountArray(szDescribeString));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
CTraceService::TraceString(szDescribeString,TraceLevel_Exception);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
AfxMessageBox(szDescribeString,MB_ICONERROR);
return false;
}
return true;
}
catch (IDataBaseException * pIException)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
LPCTSTR pszDescribe=pIException->GetExceptionDescribe();
CTraceService::TraceString(pszDescribe,TraceLevel_Exception);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
AfxMessageBox(pszDescribe,MB_ICONERROR);
}
return false;
}
//<2F><><EFBFBD>뷿<EFBFBD><EBB7BF>
bool CServerInfoManager::InsertGameServer(tagGameServerCreate * pGameServerCreate, tagGameServerInfo & GameServerResult)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDataBaseAide PlatformDBAide;
CDataBaseHelper PlatformDBModule;
//ִ<><D6B4><EFBFBD>߼<EFBFBD>
try
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
if (ConnectPlatformDB(PlatformDBModule)==false)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface());
//<2F><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>
TCHAR szCustomRule[CountArray(pGameServerCreate->cbCustomRule)*2+1]=TEXT("");
for (INT i=0;i<CountArray(pGameServerCreate->cbCustomRule);i++) _stprintf(&szCustomRule[i*2],TEXT("%02X"),pGameServerCreate->cbCustomRule[i]);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PlatformDBAide.ResetParameter();
PlatformDBAide.AddParameter(TEXT("@wGameID"),pGameServerCreate->wGameID);
PlatformDBAide.AddParameter(TEXT("@wKindID"),pGameServerCreate->wKindID);
PlatformDBAide.AddParameter(TEXT("@wNodeID"),pGameServerCreate->wNodeID);
PlatformDBAide.AddParameter(TEXT("@wSortID"),pGameServerCreate->wSortID);
PlatformDBAide.AddParameter(TEXT("@lCellScore"),pGameServerCreate->lCellScore);
PlatformDBAide.AddParameter(TEXT("@wRevenueRatio"),pGameServerCreate->wRevenueRatio);
PlatformDBAide.AddParameter(TEXT("@lServiceScore"),pGameServerCreate->lServiceScore);
PlatformDBAide.AddParameter(TEXT("@lRestrictScore"),pGameServerCreate->lRestrictScore);
PlatformDBAide.AddParameter(TEXT("@lMinTableScore"),pGameServerCreate->lMinTableScore);
PlatformDBAide.AddParameter(TEXT("@lMinEnterScore"),pGameServerCreate->lMinEnterScore);
PlatformDBAide.AddParameter(TEXT("@lMaxEnterScore"),pGameServerCreate->lMaxEnterScore);
PlatformDBAide.AddParameter(TEXT("@cbMinEnterMember"),pGameServerCreate->cbMinEnterMember);
PlatformDBAide.AddParameter(TEXT("@cbMaxEnterMember"),pGameServerCreate->cbMaxEnterMember);
PlatformDBAide.AddParameter(TEXT("@dwServerRule"),pGameServerCreate->dwServerRule);
PlatformDBAide.AddParameter(TEXT("@dwAttachUserRight"),pGameServerCreate->dwAttachUserRight);
PlatformDBAide.AddParameter(TEXT("@wMaxPlayer"),pGameServerCreate->wMaxPlayer);
PlatformDBAide.AddParameter(TEXT("@wTableCount"),pGameServerCreate->wTableCount);
PlatformDBAide.AddParameter(TEXT("@wServerPort"),pGameServerCreate->wServerPort);
PlatformDBAide.AddParameter(TEXT("@wServerType"),pGameServerCreate->wServerType);
PlatformDBAide.AddParameter(TEXT("@strServerName"),pGameServerCreate->szServerName);
PlatformDBAide.AddParameter(TEXT("@cbDistributeRule"),pGameServerCreate->cbDistributeRule);
PlatformDBAide.AddParameter(TEXT("@wMinDistributeUser"),pGameServerCreate->wMinDistributeUser);
PlatformDBAide.AddParameter(TEXT("@wMaxDistributeUser"),pGameServerCreate->wMaxDistributeUser);
PlatformDBAide.AddParameter(TEXT("@wDistributeTimeSpace"),pGameServerCreate->wDistributeTimeSpace);
PlatformDBAide.AddParameter(TEXT("@wDistributeDrawCount"),pGameServerCreate->wDistributeDrawCount);
PlatformDBAide.AddParameter(TEXT("@wDistributeStartDelay"),pGameServerCreate->wDistributeStartDelay);
PlatformDBAide.AddParameter(TEXT("@strDataBaseName"),pGameServerCreate->szDataBaseName);
PlatformDBAide.AddParameter(TEXT("@strDataBaseAddr"),pGameServerCreate->szDataBaseAddr);
PlatformDBAide.AddParameter(TEXT("@strCustomRule"),szCustomRule);
PlatformDBAide.AddParameter(TEXT("@strServiceMachine"),pGameServerCreate->szServiceMachine);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
TCHAR szDescribeString[128]=TEXT("");
PlatformDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput);
//ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (PlatformDBAide.ExecuteProcess(TEXT("GSP_GS_InsertGameRoom"),true)!=DB_SUCCESS)
{
//<2F><>ȡ<EFBFBD><C8A1>Ϣ
PlatformDBAide.GetParameter(TEXT("@strErrorDescribe"),szDescribeString,CountArray(szDescribeString));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
CTraceService::TraceString(szDescribeString,TraceLevel_Exception);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
AfxMessageBox(szDescribeString,MB_ICONERROR);
return false;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
ReadGameServerInfo(PlatformDBAide,GameServerResult);
return true;
}
catch (IDataBaseException * pIException)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
LPCTSTR pszDescribe=pIException->GetExceptionDescribe();
CTraceService::TraceString(pszDescribe,TraceLevel_Exception);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
AfxMessageBox(pszDescribe,MB_ICONERROR);
}
return false;
}
//<2F>޸ķ<DEB8><C4B7><EFBFBD>
bool CServerInfoManager::ModifyGameServer(tagGameServerCreate * pGameServerCreate, tagGameServerInfo & GameServerResult)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDataBaseAide PlatformDBAide;
CDataBaseHelper PlatformDBModule;
//ִ<><D6B4><EFBFBD>߼<EFBFBD>
try
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
if (ConnectPlatformDB(PlatformDBModule)==false)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface());
//<2F><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>
TCHAR szCustomRule[CountArray(pGameServerCreate->cbCustomRule)*2+1]=TEXT("");
for (INT i=0;i<CountArray(pGameServerCreate->cbCustomRule);i++) _stprintf(&szCustomRule[i*2],TEXT("%02X"),pGameServerCreate->cbCustomRule[i]);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PlatformDBAide.ResetParameter();
PlatformDBAide.AddParameter(TEXT("@wServerID"),pGameServerCreate->wServerID);
PlatformDBAide.AddParameter(TEXT("@wKindID"),pGameServerCreate->wKindID);
PlatformDBAide.AddParameter(TEXT("@wNodeID"),pGameServerCreate->wNodeID);
PlatformDBAide.AddParameter(TEXT("@wSortID"),pGameServerCreate->wSortID);
PlatformDBAide.AddParameter(TEXT("@lCellScore"),pGameServerCreate->lCellScore);
PlatformDBAide.AddParameter(TEXT("@wRevenueRatio"),pGameServerCreate->wRevenueRatio);
PlatformDBAide.AddParameter(TEXT("@lServiceScore"),pGameServerCreate->lServiceScore);
PlatformDBAide.AddParameter(TEXT("@lRestrictScore"),pGameServerCreate->lRestrictScore);
PlatformDBAide.AddParameter(TEXT("@lMinTableScore"),pGameServerCreate->lMinTableScore);
PlatformDBAide.AddParameter(TEXT("@lMinEnterScore"),pGameServerCreate->lMinEnterScore);
PlatformDBAide.AddParameter(TEXT("@lMaxEnterScore"),pGameServerCreate->lMaxEnterScore);
PlatformDBAide.AddParameter(TEXT("@cbMinEnterMember"),pGameServerCreate->cbMinEnterMember);
PlatformDBAide.AddParameter(TEXT("@cbMaxEnterMember"),pGameServerCreate->cbMaxEnterMember);
PlatformDBAide.AddParameter(TEXT("@dwServerRule"),pGameServerCreate->dwServerRule);
PlatformDBAide.AddParameter(TEXT("@dwAttachUserRight"),pGameServerCreate->dwAttachUserRight);
PlatformDBAide.AddParameter(TEXT("@wMaxPlayer"),pGameServerCreate->wMaxPlayer);
PlatformDBAide.AddParameter(TEXT("@wTableCount"),pGameServerCreate->wTableCount);
PlatformDBAide.AddParameter(TEXT("@wServerPort"),pGameServerCreate->wServerPort);
PlatformDBAide.AddParameter(TEXT("@wServerType"),pGameServerCreate->wServerType);
PlatformDBAide.AddParameter(TEXT("@strServerName"),pGameServerCreate->szServerName);
PlatformDBAide.AddParameter(TEXT("@cbDistributeRule"),pGameServerCreate->cbDistributeRule);
PlatformDBAide.AddParameter(TEXT("@wMinDistributeUser"),pGameServerCreate->wMinDistributeUser);
PlatformDBAide.AddParameter(TEXT("@wMaxDistributeUser"),pGameServerCreate->wMaxDistributeUser);
PlatformDBAide.AddParameter(TEXT("@wDistributeTimeSpace"),pGameServerCreate->wDistributeTimeSpace);
PlatformDBAide.AddParameter(TEXT("@wDistributeDrawCount"),pGameServerCreate->wDistributeDrawCount);
PlatformDBAide.AddParameter(TEXT("@wDistributeStartDelay"),pGameServerCreate->wDistributeStartDelay);
PlatformDBAide.AddParameter(TEXT("@strDataBaseName"),pGameServerCreate->szDataBaseName);
PlatformDBAide.AddParameter(TEXT("@strDataBaseAddr"),pGameServerCreate->szDataBaseAddr);
PlatformDBAide.AddParameter(TEXT("@strCustomRule"),szCustomRule);
PlatformDBAide.AddParameter(TEXT("@strServiceMachine"),pGameServerCreate->szServiceMachine);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
TCHAR szDescribeString[128]=TEXT("");
PlatformDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput);
//ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (PlatformDBAide.ExecuteProcess(TEXT("GSP_GS_ModifyGameRoom"),true)!=DB_SUCCESS)
{
//<2F><>ȡ<EFBFBD><C8A1>Ϣ
PlatformDBAide.GetParameter(TEXT("@strErrorDescribe"),szDescribeString,CountArray(szDescribeString));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
CTraceService::TraceString(szDescribeString,TraceLevel_Exception);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
AfxMessageBox(szDescribeString,MB_ICONERROR);
return false;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
ReadGameServerInfo(PlatformDBAide,GameServerResult);
return true;
}
catch (IDataBaseException * pIException)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
LPCTSTR pszDescribe=pIException->GetExceptionDescribe();
CTraceService::TraceString(pszDescribe,TraceLevel_Exception);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
AfxMessageBox(pszDescribe,MB_ICONERROR);
return false;
}
return false;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
bool CServerInfoManager::GetAndroidParameter(WORD wServerID, CWHArray<tagAndroidParameter> & AndParameterAry)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDataBaseAide PlatformDBAide;
CDataBaseHelper PlatformDBModule;
try
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
if (ConnectPlatformDB(PlatformDBModule) == false)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface());
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PlatformDBAide.ResetParameter();
PlatformDBAide.AddParameter(TEXT("@wServerID"), wServerID);
//ִ<>в<EFBFBD>ѯ
LONG lResultCode = PlatformDBAide.ExecuteProcess(TEXT("GSP_GP_AndroidGetParameter"), true);
if (lResultCode == DB_SUCCESS)
{
while (PlatformDBModule->IsRecordsetEnd() == false)
{
tagAndroidParameter mAndParam;
ReadAndroidParameter(PlatformDBAide, &mAndParam);
AndParameterAry.Add(mAndParam);
//<2F>ƶ<EFBFBD><C6B6>α<EFBFBD>
PlatformDBModule->MoveToNext();
}
}
return true;
}
catch (IDataBaseException * pIException)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
return false;
}
return true;
}
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CServerInfoManager::DeleteAndroidParameter(WORD wServerID, DWORD dwBatchID)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDataBaseAide PlatformDBAide;
CDataBaseHelper PlatformDBModule;
try
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
if (ConnectPlatformDB(PlatformDBModule) == false)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface());
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PlatformDBAide.ResetParameter();
PlatformDBAide.AddParameter(TEXT("@dwBatchID"), dwBatchID);
//ִ<>в<EFBFBD>ѯ
LONG lResultCode = PlatformDBAide.ExecuteProcess(TEXT("GSP_GP_AndroidDeleteParameter"), true);
return true;
}
catch (IDataBaseException * pIException)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
return false;
}
return true;
}
//<2F>޸IJ<DEB8><C4B2><EFBFBD>
bool CServerInfoManager::ModifyAndroidParameter(WORD wServerID, tagAndroidParameter * pAndroidParameter)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDataBaseAide PlatformDBAide;
CDataBaseHelper PlatformDBModule;
try
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
if (ConnectPlatformDB(PlatformDBModule) == false)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface());
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PlatformDBAide.ResetParameter();
PlatformDBAide.AddParameter(TEXT("@dwDatchID"), pAndroidParameter->dwBatchID);
PlatformDBAide.AddParameter(TEXT("@dwServiceMode"), pAndroidParameter->dwServiceMode);
PlatformDBAide.AddParameter(TEXT("@dwAndroidCount"), pAndroidParameter->dwAndroidCount);
PlatformDBAide.AddParameter(TEXT("@dwEnterTime"), pAndroidParameter->dwEnterTime);
PlatformDBAide.AddParameter(TEXT("@dwLeaveTime"), pAndroidParameter->dwLeaveTime);
PlatformDBAide.AddParameter(TEXT("@dwEnterMinInterval"), pAndroidParameter->dwEnterMinInterval);
PlatformDBAide.AddParameter(TEXT("@dwEnterMaxInterval"), pAndroidParameter->dwEnterMaxInterval);
PlatformDBAide.AddParameter(TEXT("@dwLeaveMinInterval"), pAndroidParameter->dwLeaveMinInterval);
PlatformDBAide.AddParameter(TEXT("@dwLeaveMaxInterval"), pAndroidParameter->dwLeaveMaxInterval);
PlatformDBAide.AddParameter(TEXT("@lTakeMinScore"), pAndroidParameter->lTakeMinScore);
PlatformDBAide.AddParameter(TEXT("@lTakeMaxScore"), pAndroidParameter->lTakeMaxScore);
PlatformDBAide.AddParameter(TEXT("@dwSwitchMinInnings"), pAndroidParameter->dwSwitchMinInnings);
PlatformDBAide.AddParameter(TEXT("@dwSwitchMaxInnings"), pAndroidParameter->dwSwitchMaxInnings);
//ִ<>в<EFBFBD>ѯ
LONG lResultCode = PlatformDBAide.ExecuteProcess(TEXT("GSP_GP_AndroidModifyParameter"), true);
if (lResultCode==DB_SUCCESS)
{
ReadAndroidParameter(PlatformDBAide, pAndroidParameter);
}
return true;
}
catch (IDataBaseException * pIException)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
return false;
}
return true;
}
//<2F><><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>
bool CServerInfoManager::AddAndroidParameter(WORD wServerID, tagAndroidParameter * pAndroidParameter)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDataBaseAide PlatformDBAide;
CDataBaseHelper PlatformDBModule;
try
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
if (ConnectPlatformDB(PlatformDBModule) == false)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface());
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PlatformDBAide.ResetParameter();
PlatformDBAide.AddParameter(TEXT("@wServerID"), wServerID);
PlatformDBAide.AddParameter(TEXT("@dwServiceMode"), pAndroidParameter->dwServiceMode);
PlatformDBAide.AddParameter(TEXT("@dwAndroidCount"), pAndroidParameter->dwAndroidCount);
PlatformDBAide.AddParameter(TEXT("@dwEnterTime"), pAndroidParameter->dwEnterTime);
PlatformDBAide.AddParameter(TEXT("@dwLeaveTime"), pAndroidParameter->dwLeaveTime);
PlatformDBAide.AddParameter(TEXT("@dwEnterMinInterval"), pAndroidParameter->dwEnterMinInterval);
PlatformDBAide.AddParameter(TEXT("@dwEnterMaxInterval"), pAndroidParameter->dwEnterMaxInterval);
PlatformDBAide.AddParameter(TEXT("@dwLeaveMinInterval"), pAndroidParameter->dwLeaveMinInterval);
PlatformDBAide.AddParameter(TEXT("@dwLeaveMaxInterval"), pAndroidParameter->dwLeaveMaxInterval);
PlatformDBAide.AddParameter(TEXT("@lTakeMinScore"), pAndroidParameter->lTakeMinScore);
PlatformDBAide.AddParameter(TEXT("@lTakeMaxScore"), pAndroidParameter->lTakeMaxScore);
PlatformDBAide.AddParameter(TEXT("@dwSwitchMinInnings"), pAndroidParameter->dwSwitchMinInnings);
PlatformDBAide.AddParameter(TEXT("@dwSwitchMaxInnings"), pAndroidParameter->dwSwitchMaxInnings);
//ִ<>в<EFBFBD>ѯ
LONG lResultCode = PlatformDBAide.ExecuteProcess(TEXT("GSP_GP_AndroidAddParameter"), true);
//ִ<>в<EFBFBD>ѯ
if (lResultCode == DB_SUCCESS)
{
ReadAndroidParameter(PlatformDBAide, pAndroidParameter);
}
return true;
}
catch (IDataBaseException * pIException)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CTraceService::TraceString(pIException->GetExceptionDescribe(), TraceLevel_Exception);
return false;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CServerInfoManager::ConnectPlatformDB(CDataBaseHelper & PlatformDBModule)
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
CModuleDBParameter * pModuleDBParameter=CModuleDBParameter::GetModuleDBParameter();
tagDataBaseParameter * pDataBaseParameter=pModuleDBParameter->GetPlatformDBParameter();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ((PlatformDBModule.GetInterface()==NULL)&&(PlatformDBModule.CreateInstance()==false))
{
AfxMessageBox(TEXT("CreateGameServer <20><><EFBFBD><EFBFBD> PlatformDBModule <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>"),MB_ICONERROR);
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PlatformDBModule->SetConnectionInfo(pDataBaseParameter->szDataBaseAddr,pDataBaseParameter->wDataBasePort,
pDataBaseParameter->szDataBaseName,pDataBaseParameter->szDataBaseUser,pDataBaseParameter->szDataBasePass);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PlatformDBModule->OpenConnection();
return true;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
bool CServerInfoManager::ReadGameServerInfo(CDataBaseAide & PlatformDBAide, tagGameServerInfo & GameServerResult)
{
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
ZeroMemory(&GameServerResult,sizeof(GameServerResult));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameServerResult.wGameID=PlatformDBAide.GetValue_WORD(TEXT("GameID"));
GameServerResult.wServerID=PlatformDBAide.GetValue_WORD(TEXT("ServerID"));
//<2F>ҽ<EFBFBD><D2BD><EFBFBD><EFBFBD><EFBFBD>
GameServerResult.wKindID=PlatformDBAide.GetValue_WORD(TEXT("KindID"));
GameServerResult.wNodeID=PlatformDBAide.GetValue_WORD(TEXT("NodeID"));
GameServerResult.wSortID=PlatformDBAide.GetValue_WORD(TEXT("SortID"));
//<2F><EFBFBD><E6B1BE>Ϣ
GameServerResult.dwClientVersion=PlatformDBAide.GetValue_DWORD(TEXT("ClientVersion"));
GameServerResult.dwServerVersion=PlatformDBAide.GetValue_DWORD(TEXT("ServerVersion"));
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PlatformDBAide.GetValue_String(TEXT("GameName"),GameServerResult.szGameName,CountArray(GameServerResult.szGameName));
PlatformDBAide.GetValue_String(TEXT("ServerDLLName"),GameServerResult.szServerDLLName,CountArray(GameServerResult.szServerDLLName));
PlatformDBAide.GetValue_String(TEXT("ClientEXEName"),GameServerResult.szClientEXEName,CountArray(GameServerResult.szClientEXEName));
//˰<><CBB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameServerResult.lCellScore=PlatformDBAide.GetValue_LONG(TEXT("CellScore"));
GameServerResult.wRevenueRatio=PlatformDBAide.GetValue_WORD(TEXT("RevenueRatio"));
GameServerResult.lServiceScore=PlatformDBAide.GetValue_LONGLONG(TEXT("ServiceScore"));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameServerResult.lRestrictScore=PlatformDBAide.GetValue_LONGLONG(TEXT("RestrictScore"));
GameServerResult.lMinTableScore=PlatformDBAide.GetValue_LONGLONG(TEXT("MinTableScore"));
GameServerResult.lMinEnterScore=PlatformDBAide.GetValue_LONGLONG(TEXT("MinEnterScore"));
GameServerResult.lMaxEnterScore=PlatformDBAide.GetValue_LONGLONG(TEXT("MaxEnterScore"));
//<2F><>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>
GameServerResult.cbMinEnterMember=PlatformDBAide.GetValue_BYTE(TEXT("MinEnterMember"));
GameServerResult.cbMaxEnterMember=PlatformDBAide.GetValue_BYTE(TEXT("MaxEnterMember"));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameServerResult.dwServerRule=PlatformDBAide.GetValue_DWORD(TEXT("ServerRule"));
GameServerResult.dwAttachUserRight=PlatformDBAide.GetValue_DWORD(TEXT("AttachUserRight"));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameServerResult.wMaxPlayer=PlatformDBAide.GetValue_WORD(TEXT("MaxPlayer"));
GameServerResult.wTableCount=PlatformDBAide.GetValue_WORD(TEXT("TableCount"));
GameServerResult.wServerPort=PlatformDBAide.GetValue_WORD(TEXT("ServerPort"));
GameServerResult.wServerType=PlatformDBAide.GetValue_WORD(TEXT("ServerType"));
PlatformDBAide.GetValue_String(TEXT("ServerName"),GameServerResult.szServerName,CountArray(GameServerResult.szServerName));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameServerResult.cbDistributeRule=PlatformDBAide.GetValue_BYTE(TEXT("DistributeRule"));
GameServerResult.wMinDistributeUser=PlatformDBAide.GetValue_WORD(TEXT("MinDistributeUser"));
GameServerResult.wMaxDistributeUser=PlatformDBAide.GetValue_WORD(TEXT("MaxDistributeUser"));
GameServerResult.wDistributeTimeSpace=PlatformDBAide.GetValue_WORD(TEXT("DistributeTimeSpace"));
GameServerResult.wDistributeDrawCount=PlatformDBAide.GetValue_WORD(TEXT("DistributeDrawCount"));
GameServerResult.wDistributeStartDelay=PlatformDBAide.GetValue_WORD(TEXT("DistributeStartDelay"));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PlatformDBAide.GetValue_String(TEXT("DataBaseName"),GameServerResult.szDataBaseName,CountArray(GameServerResult.szDataBaseName));
PlatformDBAide.GetValue_String(TEXT("DataBaseAddr"),GameServerResult.szDataBaseAddr,CountArray(GameServerResult.szDataBaseAddr));
//<2F><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>
TCHAR szCustomRule[CountArray(GameServerResult.cbCustomRule)*2+1];
PlatformDBAide.GetValue_String(TEXT("CustomRule"),szCustomRule,CountArray(szCustomRule));
PlatformDBAide.GetValue_String(TEXT("ServiceMachine"),GameServerResult.szServiceMachine,CountArray(GameServerResult.szServiceMachine));
//<2F><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>
if (szCustomRule[0]!=0)
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
ASSERT(lstrlen(szCustomRule)%2==0);
INT nCustomRuleSize=lstrlen(szCustomRule)/2;
//ת<><D7AA><EFBFBD>ַ<EFBFBD>
for (INT i=0;i<nCustomRuleSize;i++)
{
//<2F><>ȡ<EFBFBD>ַ<EFBFBD>
TCHAR cbChar1=szCustomRule[i*2];
TCHAR cbChar2=szCustomRule[i*2+1];
//Ч<><D0A7><EFBFBD>ַ<EFBFBD>
ASSERT((cbChar1>=TEXT('0'))&&(cbChar1<=TEXT('9'))||(cbChar1>=TEXT('A'))&&(cbChar1<=TEXT('F')));
ASSERT((cbChar2>=TEXT('0'))&&(cbChar2<=TEXT('9'))||(cbChar2>=TEXT('A'))&&(cbChar2<=TEXT('F')));
//<2F><><EFBFBD>ɽ<EFBFBD><C9BD><EFBFBD>
if ((cbChar2>=TEXT('0'))&&(cbChar2<=TEXT('9'))) GameServerResult.cbCustomRule[i]+=(cbChar2-TEXT('0'));
if ((cbChar2>=TEXT('A'))&&(cbChar2<=TEXT('F'))) GameServerResult.cbCustomRule[i]+=(cbChar2-TEXT('A')+0x0A);
//<2F><><EFBFBD>ɽ<EFBFBD><C9BD><EFBFBD>
if ((cbChar1>=TEXT('0'))&&(cbChar1<=TEXT('9'))) GameServerResult.cbCustomRule[i]+=(cbChar1-TEXT('0'))*0x10;
if ((cbChar1>=TEXT('A'))&&(cbChar1<=TEXT('F'))) GameServerResult.cbCustomRule[i]+=(cbChar1-TEXT('A')+0x0A)*0x10;
}
}
//<2F><><EFBFBD>ذ汾
LPCTSTR pszServerDLLName=GameServerResult.szServerDLLName;
CWHService::GetModuleVersion(pszServerDLLName,GameServerResult.dwNativeVersion);
return true;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
bool CServerInfoManager::ReadGameMatchOption(CDataBaseAide & PlatformDBAide, tagGameMatchOption & GameMatchResult)
{
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
ZeroMemory(&GameMatchResult,sizeof(GameMatchResult));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameMatchResult.dwMatchID=PlatformDBAide.GetValue_INT(TEXT("MatchID"));
GameMatchResult.dwMatchNO=PlatformDBAide.GetValue_INT(TEXT("MatchNo"));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
GameMatchResult.cbMatchFeeType= PlatformDBAide.GetValue_INT(TEXT("MatchFeeType"));
GameMatchResult.lMatchFee= PlatformDBAide.GetValue_LONGLONG(TEXT("MatchFee"));
GameMatchResult.lMatchEnterScore= PlatformDBAide.GetValue_LONGLONG(TEXT("MatchEnterScore"));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
GameMatchResult.cbMemberOrder = PlatformDBAide.GetValue_INT(TEXT("MemberOrder"));
GameMatchResult.cbMatchType = PlatformDBAide.GetValue_INT(TEXT("MatchType"));
PlatformDBAide.GetValue_String(TEXT("MatchName"),GameMatchResult.szMatchName,CountArray(GameMatchResult.szMatchName));
//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
if(GameMatchResult.cbMatchType==MATCH_TYPE_LOCKTIME)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameMatchResult.MatchType.LockTime.wMatchPlayCount= PlatformDBAide.GetValue_LONGLONG(TEXT("MinPlayCount"));
//ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PlatformDBAide.GetValue_SystemTime(TEXT("StartTime"),GameMatchResult.MatchType.LockTime.MatchStartTime);
PlatformDBAide.GetValue_SystemTime(TEXT("EndTime"),GameMatchResult.MatchType.LockTime.MatchEndTime);
PlatformDBAide.GetValue_SystemTime(TEXT("SignupStartTime"), GameMatchResult.MatchType.LockTime.SignupStartTime);
PlatformDBAide.GetValue_SystemTime(TEXT("SignupEndTime"), GameMatchResult.MatchType.LockTime.SignupEndTime);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameMatchResult.MatchType.LockTime.lMatchInitScore = PlatformDBAide.GetValue_LONGLONG(TEXT("InitScore"));
GameMatchResult.MatchType.LockTime.lMatchCullScore = PlatformDBAide.GetValue_LONGLONG(TEXT("CullScore"));
//<2F><><EFBFBD><EFBFBD>ģʽ;
GameMatchResult.MatchType.LockTime.cbMatchMode = PlatformDBAide.GetValue_BYTE(TEXT("MatchMode"));
//<2F><><EFBFBD><EFBFBD>ID;
GameMatchResult.MatchType.LockTime.dwChannelID = (DWORD)PlatformDBAide.GetValue_DOUBLE(TEXT("ChannelID"));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID;
GameMatchResult.MatchType.LockTime.dwInviteCode = (DWORD)PlatformDBAide.GetValue_DOUBLE(TEXT("InviteCode"));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
GameMatchResult.MatchType.LockTime.dwQuality = (DWORD)PlatformDBAide.GetValue_DOUBLE(TEXT("Quality"));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
GameMatchResult.MatchType.LockTime.dwCycle = (DWORD)PlatformDBAide.GetValue_DOUBLE(TEXT("Cycle"));
}
//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
if(GameMatchResult.cbMatchType==MATCH_TYPE_IMMEDIATE)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
GameMatchResult.MatchType.Immediate.wStartUserCount = PlatformDBAide.GetValue_WORD(TEXT("StartUserCount"));
GameMatchResult.MatchType.Immediate.wAndroidUserCount = PlatformDBAide.GetValue_WORD(TEXT("AndroidUserCount"));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
GameMatchResult.MatchType.Immediate.dwInitalBase = PlatformDBAide.GetValue_DWORD(TEXT("InitialBase"));
GameMatchResult.MatchType.Immediate.dwInitalScore = PlatformDBAide.GetValue_DWORD(TEXT("InitialScore"));
GameMatchResult.MatchType.Immediate.wMinEnterGold = PlatformDBAide.GetValue_WORD(TEXT("MinEnterGold"));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
GameMatchResult.MatchType.Immediate.cbPlayCount = PlatformDBAide.GetValue_BYTE(TEXT("PlayCount"));
GameMatchResult.MatchType.Immediate.cbSwitchTableCount = PlatformDBAide.GetValue_BYTE(TEXT("SwitchTableCount"));
GameMatchResult.MatchType.Immediate.wPrecedeTimer = PlatformDBAide.GetValue_WORD(TEXT("PrecedeTimer"));
}
return true;
}
//<2F><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
WORD CServerInfoManager::LoadGameMatchReward(DWORD dwMatchID,DWORD dwMatchNO)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDataBaseAide PlatformDBAide;
CDataBaseHelper PlatformDBModule;
//ִ<><D6B4><EFBFBD>߼<EFBFBD>
try
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
if (ConnectPlatformDB(PlatformDBModule)==false)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface());
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PlatformDBAide.ResetParameter();
PlatformDBAide.AddParameter(TEXT("@dwMatchID"),dwMatchID);
PlatformDBAide.AddParameter(TEXT("@dwMatchNo"),dwMatchNO);
//<2F><>ȡ<EFBFBD>б<EFBFBD>
if (PlatformDBAide.ExecuteProcess(TEXT("GSP_GS_LoadMatchReward"),true)==DB_SUCCESS)
{
return PlatformDBModule->GetRecordCount();
}
return 0;
}
catch (IDataBaseException * pIException)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
LPCTSTR pszDescribe=pIException->GetExceptionDescribe();
CTraceService::TraceString(pszDescribe,TraceLevel_Exception);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
AfxMessageBox(pszDescribe,MB_ICONERROR);
return 0;
}
return 0;
}
//<2F><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>
bool CServerInfoManager::LoadGameMatchOption(WORD wKindID,CMatchOptionBuffer & MatchOptionBuffer)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDataBaseAide PlatformDBAide;
CDataBaseHelper PlatformDBModule;
//ִ<><D6B4><EFBFBD>߼<EFBFBD>
try
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
if (ConnectPlatformDB(PlatformDBModule)==false)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface());
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PlatformDBAide.ResetParameter();
PlatformDBAide.AddParameter(TEXT("@wKindID"),wKindID);
PlatformDBAide.AddParameter(TEXT("@dwMatchID"),0);
PlatformDBAide.AddParameter(TEXT("@dwMatchNo"),0);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
TCHAR szDescribeString[128]=TEXT("");
PlatformDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput);
//<2F><>ȡ<EFBFBD>б<EFBFBD>
if (PlatformDBAide.ExecuteProcess(TEXT("GSP_GS_LoadGameMatchItem"),true)!=DB_SUCCESS)
{
//<2F><>ȡ<EFBFBD><C8A1>Ϣ
PlatformDBAide.GetParameter(TEXT("@strErrorDescribe"),szDescribeString,CountArray(szDescribeString));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
CTraceService::TraceString(szDescribeString,TraceLevel_Exception);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
AfxMessageBox(szDescribeString,MB_ICONERROR);
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
MatchOptionBuffer.ResetMatchOption();
//<2F><>ȡ<EFBFBD>б<EFBFBD>
while (PlatformDBModule->IsRecordsetEnd()==false)
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
tagGameMatchOption GameMatchResult;
ReadGameMatchOption(PlatformDBAide,GameMatchResult);
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
MatchOptionBuffer.InsertMatchOption(&GameMatchResult);
//<2F>ƶ<EFBFBD><C6B6><EFBFBD>¼
PlatformDBModule->MoveToNext();
}
return true;
}
catch (IDataBaseException * pIException)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
LPCTSTR pszDescribe=pIException->GetExceptionDescribe();
CTraceService::TraceString(pszDescribe,TraceLevel_Exception);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
AfxMessageBox(pszDescribe,MB_ICONERROR);
return false;
}
return false;
}
//<2F><><EFBFBD>ط<EFBFBD><D8B7><EFBFBD>
bool CServerInfoManager::LoadGameMatchOption(WORD wKindID,DWORD dwMatchID,DWORD dwMatchNO,tagGameMatchOption & GameMatchResult)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDataBaseAide PlatformDBAide;
CDataBaseHelper PlatformDBModule;
//ִ<><D6B4><EFBFBD>߼<EFBFBD>
try
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
if (ConnectPlatformDB(PlatformDBModule)==false)
{
ASSERT(FALSE);
return false;
}
//<2F><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface());
//<2F><>ȡ<EFBFBD>б<EFBFBD>
PlatformDBAide.ResetParameter();
PlatformDBAide.AddParameter(TEXT("@wKindID"),wKindID);
PlatformDBAide.AddParameter(TEXT("@dwMatchID"),dwMatchID);
PlatformDBAide.AddParameter(TEXT("@dwMatchNo"),dwMatchNO);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
TCHAR szDescribeString[128]=TEXT("");
PlatformDBAide.AddParameterOutput(TEXT("@strErrorDescribe"),szDescribeString,sizeof(szDescribeString),adParamOutput);
//<2F><>ȡ<EFBFBD>б<EFBFBD>
if (PlatformDBAide.ExecuteProcess(TEXT("GSP_GS_LoadGameMatchItem"),true)!=DB_SUCCESS)
{
//<2F><>ȡ<EFBFBD><C8A1>Ϣ
PlatformDBAide.GetParameter(TEXT("@strErrorDescribe"),szDescribeString,CountArray(szDescribeString));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
CTraceService::TraceString(szDescribeString,TraceLevel_Exception);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
AfxMessageBox(szDescribeString,MB_ICONERROR);
return false;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
if (PlatformDBModule->IsRecordsetEnd()==false)
{
ReadGameMatchOption(PlatformDBAide,GameMatchResult);
return true;
}
return false;
}
catch (IDataBaseException * pIException)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
LPCTSTR pszDescribe=pIException->GetExceptionDescribe();
CTraceService::TraceString(pszDescribe,TraceLevel_Exception);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
AfxMessageBox(pszDescribe,MB_ICONERROR);
return false;
}
return false;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
bool CServerInfoManager::ReadAndroidParameter(CDataBaseAide & rs, tagAndroidParameter * pAndroidParameter)
{
pAndroidParameter->dwBatchID = rs.GetValue_DWORD(_T("BatchID"));
pAndroidParameter->dwAndroidCount = rs.GetValue_DWORD(_T("AndroidCount"));
pAndroidParameter->dwServiceMode = rs.GetValue_DWORD(_T("ServiceMode"));
pAndroidParameter->dwEnterTime = rs.GetValue_DWORD(_T("EnterTime"));
pAndroidParameter->dwLeaveTime = rs.GetValue_DWORD(_T("LeaveTime"));
pAndroidParameter->dwEnterMinInterval = rs.GetValue_DWORD(_T("EnterMinInterval"));
pAndroidParameter->dwEnterMaxInterval = rs.GetValue_DWORD(_T("EnterMaxInterval"));
pAndroidParameter->dwLeaveMinInterval = rs.GetValue_DWORD(_T("LeaveMinInterval"));
pAndroidParameter->dwLeaveMaxInterval = rs.GetValue_DWORD(_T("LeaveMaxInterval"));
pAndroidParameter->dwSwitchMinInnings = rs.GetValue_DWORD(_T("SwitchMinInnings"));
pAndroidParameter->dwSwitchMaxInnings = rs.GetValue_DWORD(_T("SwitchMaxInnings"));
pAndroidParameter->lTakeMinScore = (SCORE)rs.GetValue_DOUBLE(_T("TakeMinScore"));
pAndroidParameter->lTakeMaxScore = (SCORE)rs.GetValue_DOUBLE(_T("TakeMaxScore"));
return true;
}
//////////////////////////////////////////////////////////////////////////////////