Files
wnmj/Servers/服务器组件/登录服务器/AttemperEngineSink.cpp

2489 lines
76 KiB
C++
Raw Normal View History

2026-02-13 14:34:15 +08:00
#include "StdAfx.h"
#include "ServiceUnits.h"
#include "ControlPacket.h"
#include "AttemperEngineSink.h"
//////////////////////////////////////////////////////////////////////////////////
//ʱ<><CAB1><EFBFBD><EFBFBD>ʶ
#define IDI_LOAD_GAME_LIST 1 //<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
#define IDI_CONNECT_CORRESPOND 2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
#define IDI_COLLECT_ONLINE_INFO 3 //ͳ<><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//////////////////////////////////////////////////////////////////////////////////
void ConvertUtf8ToGBK(CString &strUtf8)
{
int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, NULL,0);
wchar_t * wszGBK = new wchar_t[len];
memset(wszGBK,0,len);
MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, wszGBK, len);
len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
char *szGBK=new char[len + 1];
memset(szGBK, 0, len + 1);
WideCharToMultiByte (CP_ACP, 0, wszGBK, -1, szGBK, len, NULL,NULL);
strUtf8 = szGBK;
delete[] szGBK;
delete[] wszGBK;
}
void ConvertUtf8ToGBK(char* pChar,int iLen)
{
CString kString(pChar);
ConvertUtf8ToGBK(kString);
strncpy(pChar,kString.GetString(),iLen);
}
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CAttemperEngineSink::CAttemperEngineSink()
{
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
m_bNeekCorrespond=true;
m_bShowServerStatus=false;
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
m_pInitParameter=NULL;
m_pBindParameter=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pITimerEngine=NULL;
m_pIDataBaseEngine=NULL;
m_pITCPNetworkEngine=NULL;
m_pITCPSocketService=NULL;
//<2F><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>
m_wAVServerPort=0;
m_dwAVServerAddr=0;
ZeroMemory((void*)&m_kCheckInInfo,sizeof(m_kCheckInInfo));
ZeroMemory(&m_BaseEnsureParameter,sizeof(m_BaseEnsureParameter));
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CAttemperEngineSink::~CAttemperEngineSink()
{
}
//<2F>ӿڲ<D3BF>ѯ
VOID * CAttemperEngineSink::QueryInterface(REFGUID Guid, DWORD dwQueryVer)
{
QUERYINTERFACE(IAttemperEngineSink,Guid,dwQueryVer);
QUERYINTERFACE_IUNKNOWNEX(IAttemperEngineSink,Guid,dwQueryVer);
return NULL;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
bool CAttemperEngineSink::OnAttemperEngineStart(IUnknownEx * pIUnknownEx)
{
//<2F>󶨲<EFBFBD><F3B6A8B2><EFBFBD>
m_pBindParameter=new tagBindParameter[m_pInitParameter->m_wMaxConnect];
ZeroMemory(m_pBindParameter,sizeof(tagBindParameter)*m_pInitParameter->m_wMaxConnect);
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
ASSERT(m_pITimerEngine!=NULL);
m_pITimerEngine->SetTimer(IDI_COLLECT_ONLINE_INFO,m_pInitParameter->m_wCollectTime*1000L,TIMES_INFINITY,0);
//<2F><>ȡĿ¼
TCHAR szPath[MAX_PATH]=TEXT("");
CString szFileName;
GetModuleFileName(AfxGetInstanceHandle(),szPath,sizeof(szPath));
szFileName=szPath;
int nIndex = szFileName.ReverseFind(TEXT('\\'));
szFileName = szFileName.Left(nIndex);
szFileName += TEXT("\\PlazaOptionConfig.ini");
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
m_bShowServerStatus = (GetPrivateProfileInt(TEXT("ServerStatus"),TEXT("ShowServerStatus"),0,szFileName) != 0);
//<2F><>ȡĿ¼
TCHAR szServerAddr[LEN_SERVER]=TEXT("");
GetCurrentDirectory(sizeof(szPath),szPath);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
TCHAR szVideoFileName[MAX_PATH]=TEXT("");
_sntprintf_s(szVideoFileName,CountArray(szVideoFileName),TEXT("%s\\VideoOption.ini"),szPath);
m_wAVServerPort=GetPrivateProfileInt(TEXT("VideoOption"),TEXT("ServerPort"), 0,szVideoFileName);
DWORD dwAddrLen=GetPrivateProfileString(TEXT("VideoOption"),TEXT("ServerAddr"), TEXT(""), szServerAddr,LEN_SERVER,szVideoFileName);
if(dwAddrLen>0)
{
CT2CA strServerDomain(szServerAddr);
m_dwAVServerAddr=inet_addr(strServerDomain);
}
else
{
m_dwAVServerAddr=0;
}
return true;
}
//ֹͣ<CDA3>¼<EFBFBD>
bool CAttemperEngineSink::OnAttemperEngineConclude(IUnknownEx * pIUnknownEx)
{
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
m_bNeekCorrespond=true;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pITimerEngine=NULL;
m_pIDataBaseEngine=NULL;
m_pITCPNetworkEngine=NULL;
m_pITCPSocketService=NULL;
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SafeDeleteArray(m_pBindParameter);
//<2F>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
m_ServerListManager.ResetServerList();
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
bool CAttemperEngineSink::OnEventControl(WORD wIdentifier, VOID * pData, WORD wDataSize)
{
switch (wIdentifier)
{
case CT_LOAD_DB_GAME_LIST: //<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
m_ServerListManager.DisuseKernelItem();
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOAD_GAME_LIST,0,NULL,0);
////<2F><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
//m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOAD_CHECKIN_REWARD,0,NULL,0);
////<2F><><EFBFBD>صͱ<D8B5>
//m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOAD_BASEENSURE,0,NULL,0);
////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOAD_BEGINNER,0,NULL,0);
//DBR_GP_GetAddBankConfig kGetAddBankConfig;
//kGetAddBankConfig.iIdex = 0;
//m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOAD_ADDRANK_CONFIG,0,&kGetAddBankConfig,sizeof(kGetAddBankConfig));
//kGetAddBankConfig.iIdex = 1;
//m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOAD_ADDRANK_CONFIG,0,&kGetAddBankConfig,sizeof(kGetAddBankConfig));
//kGetAddBankConfig.iIdex = 2;
//m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOAD_ADDRANK_CONFIG,0,&kGetAddBankConfig,sizeof(kGetAddBankConfig));
return true;
}
case CT_CONNECT_CORRESPOND: //<2F><><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagAddressInfo * pCorrespondAddress=&m_pInitParameter->m_CorrespondAddress;
m_pITCPSocketService->Connect(pCorrespondAddress->szAddress,m_pInitParameter->m_wCorrespondPort);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
TCHAR szString[512]=TEXT("");
_sntprintf_s(szString,CountArray(szString),TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [ %s:%d ]"),pCorrespondAddress->szAddress,m_pInitParameter->m_wCorrespondPort);
//<2F><>ʾ<EFBFBD><CABE>Ϣ
CTraceService::TraceString(szString,TraceLevel_Normal);
return true;
}
}
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
bool CAttemperEngineSink::OnEventAttemperData(WORD wRequestID, VOID * pData, WORD wDataSize)
{
return false;
}
//ʱ<><CAB1><EFBFBD>¼<EFBFBD>
bool CAttemperEngineSink::OnEventTimer(DWORD dwTimerID, WPARAM wBindParam)
{
switch (dwTimerID)
{
case IDI_LOAD_GAME_LIST: //<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
m_ServerListManager.DisuseKernelItem();
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOAD_GAME_LIST,0,NULL,0);
return true;
}
case IDI_CONNECT_CORRESPOND: //<2F><><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagAddressInfo * pCorrespondAddress=&m_pInitParameter->m_CorrespondAddress;
m_pITCPSocketService->Connect(pCorrespondAddress->szAddress,m_pInitParameter->m_wCorrespondPort);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
TCHAR szString[512]=TEXT("");
_sntprintf_s(szString,CountArray(szString),TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [ %s:%d ]"),pCorrespondAddress->szAddress,m_pInitParameter->m_wCorrespondPort);
//<2F><>ʾ<EFBFBD><CABE>Ϣ
CTraceService::TraceString(szString,TraceLevel_Normal);
return true;
}
case IDI_COLLECT_ONLINE_INFO: //ͳ<><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBR_GP_OnLineCountInfo OnLineCountInfo;
ZeroMemory(&OnLineCountInfo,sizeof(OnLineCountInfo));
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
OnLineCountInfo.dwOnLineCountSum=m_ServerListManager.CollectOnlineInfo();
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
POSITION KindPosition=NULL;
do
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
CGameKindItem * pGameKindItem=m_ServerListManager.EmunGameKindItem(KindPosition);
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
if (pGameKindItem!=NULL)
{
WORD wKindIndex=OnLineCountInfo.wKindCount++;
OnLineCountInfo.OnLineCountKind[wKindIndex].wKindID=pGameKindItem->m_GameKind.wKindID;
OnLineCountInfo.OnLineCountKind[wKindIndex].dwOnLineCount=pGameKindItem->m_GameKind.dwOnLineCount;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
if (OnLineCountInfo.wKindCount>=CountArray(OnLineCountInfo.OnLineCountKind))
{
ASSERT(FALSE);
break;
}
} while (KindPosition!=NULL);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wHeadSize=sizeof(OnLineCountInfo)-sizeof(OnLineCountInfo.OnLineCountKind);
WORD wSendSize=wHeadSize+OnLineCountInfo.wKindCount*sizeof(OnLineCountInfo.OnLineCountKind[0]);
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_ONLINE_COUNT_INFO,0,&OnLineCountInfo,wSendSize);
return true;
}
}
return false;
}
//Ӧ<><D3A6><EFBFBD>¼<EFBFBD>
bool CAttemperEngineSink::OnEventTCPNetworkBind(DWORD dwClientAddr, DWORD dwSocketID)
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwSocketID)<m_pInitParameter->m_wMaxConnect);
if (LOWORD(dwSocketID)>=m_pInitParameter->m_wMaxConnect) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wBindIndex=LOWORD(dwSocketID);
tagBindParameter * pBindParameter=(m_pBindParameter+wBindIndex);
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
pBindParameter->dwSocketID=dwSocketID;
pBindParameter->dwClientAddr=dwClientAddr;
pBindParameter->dwActiveTime=(DWORD)time(NULL);
return true;
}
//<2F>ر<EFBFBD><D8B1>¼<EFBFBD>
bool CAttemperEngineSink::OnEventTCPNetworkShut(DWORD dwClientAddr, DWORD dwActiveTime, DWORD dwSocketID)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
WORD wBindIndex=LOWORD(dwSocketID);
ZeroMemory((m_pBindParameter+wBindIndex),sizeof(tagBindParameter));
return false;
}
//<2F><>ȡ<EFBFBD>¼<EFBFBD>
bool CAttemperEngineSink::OnEventTCPNetworkRead(TCP_Command Command, VOID * pData, WORD wDataSize, DWORD dwSocketID)
{
switch (Command.wMainCmdID)
{
case MDM_GP_LOGON: //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
{
return OnTCPNetworkMainPCLogon(Command.wSubCmdID,pData,wDataSize,dwSocketID);
}
case MDM_GP_SERVER_LIST: //<2F>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
{
return OnTCPNetworkMainPCServerList(Command.wSubCmdID,pData,wDataSize,dwSocketID);
}
case MDM_GP_USER_SERVICE: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return OnTCPNetworkMainPCUserService(Command.wSubCmdID,pData,wDataSize,dwSocketID);
}
case MDM_GP_REMOTE_SERVICE: //Զ<>̷<EFBFBD><CCB7><EFBFBD>
{
return OnTCPNetworkMainPCRemoteService(Command.wSubCmdID,pData,wDataSize,dwSocketID);
}
}
return false;
}
//<2F><><EFBFBD>ݿ<EFBFBD><DDBF>¼<EFBFBD>
bool CAttemperEngineSink::OnEventDataBase(WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize)
{
switch (wRequestID)
{
case DBO_GP_LOGON_SUCCESS: //<2F><>¼<EFBFBD>ɹ<EFBFBD>
{
return OnDBPCLogonSuccess(dwContextID,pData,wDataSize);
}
case DBO_GP_LOGON_FAILURE: //<2F><>¼ʧ<C2BC><CAA7>
{
return OnDBPCLogonFailure(dwContextID,pData,wDataSize);
}
case DBO_GP_USER_INDIVIDUAL: //<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
{
return OnDBPCUserIndividual(dwContextID,pData,wDataSize);
}
case DBO_GP_USER_ACCOUNTINFO: //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
{
return OnDBPCUserAccountInfo(dwContextID,pData,wDataSize);
}
case DBO_GP_USER_INGAME_SERVER_ID: //<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7>
{
return OnDBPCInGameSevrerID(dwContextID,pData,wDataSize);
}
case DBO_GP_USER_WXSHARE_REWARD: //΢<>ŷ<EFBFBD><C5B7><EFBFBD><EFBFBD>ɹ<EFBFBD>
{
return OnDBPCUserWXShareReward(dwContextID, pData, wDataSize);
}
case DBO_GP_OPERATE_SUCCESS: //<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
{
return OnDBPCOperateSuccess(dwContextID,pData,wDataSize);
}
case DBO_GP_OPERATE_FAILURE: //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
{
return OnDBPCOperateFailure(dwContextID,pData,wDataSize);
}
case DBO_GP_GAME_TYPE_ITEM: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return OnDBPCGameTypeItem(dwContextID,pData,wDataSize);
}
case DBO_GP_GAME_KIND_ITEM: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return OnDBPCGameKindItem(dwContextID,pData,wDataSize);
}
case DBO_GP_GAME_NODE_ITEM: //<2F>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
{
return OnDBPCGameNodeItem(dwContextID,pData,wDataSize);
}
case DBO_GP_GAME_PAGE_ITEM: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return OnDBPCGamePageItem(dwContextID,pData,wDataSize);
}
case DBO_GP_GAME_LIST_RESULT: //<2F><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
{
return OnDBPCGameListResult(dwContextID,pData,wDataSize);
}
case DBO_GP_GAME_RECORD_LIST: //ս<><D5BD><EFBFBD>ط<EFBFBD><D8B7>б<EFBFBD>
{
return OnDBPCGameRecordList(dwContextID,pData,wDataSize);
}
case DBO_GP_GAME_RECORD_TOTAL: //ս<><D5BD><EFBFBD>б<EFBFBD>
{
return OnDBPCGameRecordTotal(dwContextID,pData,wDataSize);
}
case DBO_GP_GAME_RECORD_CHILD:
{
return OnDBPCGameRecordChild(dwContextID, pData, wDataSize);
}
case DBO_GP_QueryInMatch:
{
return OnDBPCQueryInMatch(dwContextID, pData, wDataSize);
}
case DBO_GP_QueryInUnion:
{
return OnDBPCQueryInUnion(dwContextID, pData, wDataSize);
}
case DBO_GP_UnionList:
{
return OnDBPCUnionList(dwContextID, pData, wDataSize);
}
case DBO_GP_UnionGameList:
{
return OnDBPCUnionGameList(dwContextID, pData, wDataSize);
}
case DBO_GP_UnionRoomList:
{
return OnDBPCUnionRoomList(dwContextID, pData, wDataSize);
}
case DBO_GP_AutoRoomList:
{
return OnDBPCAutoRoomList(dwContextID, pData, wDataSize);
}
}
return false;
}
//<2F>ر<EFBFBD><D8B1>¼<EFBFBD>
bool CAttemperEngineSink::OnEventTCPSocketShut(WORD wServiceID, BYTE cbShutReason)
{
//Э<><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (wServiceID==NETWORK_CORRESPOND)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
if (m_bNeekCorrespond==true)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
TCHAR szDescribe[128]=TEXT("");
_sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("<EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӹر<EFBFBD><EFBFBD>ˣ<EFBFBD>%ld <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),m_pInitParameter->m_wConnectTime);
//<2F><>ʾ<EFBFBD><CABE>Ϣ
CTraceService::TraceString(szDescribe,TraceLevel_Warning);
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
ASSERT(m_pITimerEngine!=NULL);
m_pITimerEngine->SetTimer(IDI_CONNECT_CORRESPOND,m_pInitParameter->m_wConnectTime*1000L,1,0);
return true;
}
}
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
bool CAttemperEngineSink::OnEventTCPSocketLink(WORD wServiceID, INT nErrorCode)
{
//Э<><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (wServiceID==NETWORK_CORRESPOND)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
if (nErrorCode!=0)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
TCHAR szDescribe[128]=TEXT("");
_sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD> [ %ld ]<5D><>%ld <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),
nErrorCode,m_pInitParameter->m_wConnectTime);
//<2F><>ʾ<EFBFBD><CABE>Ϣ
CTraceService::TraceString(szDescribe,TraceLevel_Warning);
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
ASSERT(m_pITimerEngine!=NULL);
m_pITimerEngine->SetTimer(IDI_CONNECT_CORRESPOND,m_pInitParameter->m_wConnectTime*1000L,1,0);
return false;
}
//<2F><>ʾ<EFBFBD><CABE>Ϣ
CTraceService::TraceString(TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..."),TraceLevel_Normal);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_CS_C_RegisterPlaza RegisterPlaza;
ZeroMemory(&RegisterPlaza,sizeof(RegisterPlaza));
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
lstrcpyn(RegisterPlaza.szServerName,m_pInitParameter->m_szServerName,CountArray(RegisterPlaza.szServerName));
lstrcpyn(RegisterPlaza.szServerAddr,m_pInitParameter->m_ServiceAddress.szAddress,CountArray(RegisterPlaza.szServerAddr));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pITCPSocketService->SendData(MDM_CS_REGISTER,SUB_CS_C_REGISTER_PLAZA,&RegisterPlaza,sizeof(RegisterPlaza));
return true;
}
return true;
}
//<2F><>ȡ<EFBFBD>¼<EFBFBD>
bool CAttemperEngineSink::OnEventTCPSocketRead(WORD wServiceID, TCP_Command Command, VOID * pData, WORD wDataSize)
{
//Э<><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (wServiceID==NETWORK_CORRESPOND)
{
switch (Command.wMainCmdID)
{
case MDM_CS_REGISTER: //ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return OnTCPSocketMainRegister(Command.wSubCmdID,pData,wDataSize);
}
case MDM_CS_SERVICE_INFO: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
{
return OnTCPSocketMainServiceInfo(Command.wSubCmdID,pData,wDataSize);
}
case MDM_CS_REMOTE_SERVICE: //Զ<>̷<EFBFBD><CCB7><EFBFBD>
{
return OnTCPSocketMainRemoteService(Command.wSubCmdID,pData,wDataSize);
}
case MDM_CS_MANAGER_SERVICE: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return true;
}
case MDM_CS_WEB_SERVICE:
{
return true;
}
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(FALSE);
return false;
}
//ע<><D7A2><EFBFBD>¼<EFBFBD>
bool CAttemperEngineSink::OnTCPSocketMainRegister(WORD wSubCmdID, VOID * pData, WORD wDataSize)
{
switch (wSubCmdID)
{
case SUB_CS_S_REGISTER_FAILURE: //ע<><D7A2>ʧ<EFBFBD><CAA7>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_CS_S_RegisterFailure * pRegisterFailure=(CMD_CS_S_RegisterFailure *)pData;
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize>=(sizeof(CMD_CS_S_RegisterFailure)-sizeof(pRegisterFailure->szDescribeString)));
if (wDataSize<(sizeof(CMD_CS_S_RegisterFailure)-sizeof(pRegisterFailure->szDescribeString))) return false;
//<2F>رմ<D8B1><D5B4><EFBFBD>
m_bNeekCorrespond=false;
m_pITCPSocketService->CloseSocket();
//<2F><>ʾ<EFBFBD><CABE>Ϣ
LPCTSTR pszDescribeString=pRegisterFailure->szDescribeString;
if (lstrlen(pszDescribeString)>0) CTraceService::TraceString(pszDescribeString,TraceLevel_Exception);
//<2F>¼<EFBFBD>֪ͨ
CP_ControlResult ControlResult;
ControlResult.cbSuccess=ER_FAILURE;
SendUIControlPacket(UI_CORRESPOND_RESULT,&ControlResult,sizeof(ControlResult));
return true;
}
}
return true;
}
//<2F>б<EFBFBD><D0B1>¼<EFBFBD>
bool CAttemperEngineSink::OnTCPSocketMainServiceInfo(WORD wSubCmdID, VOID * pData, WORD wDataSize)
{
switch (wSubCmdID)
{
case SUB_CS_S_SERVER_INFO: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
m_ServerListManager.DisuseServerItem();
return true;
}
case SUB_CS_S_SERVER_ONLINE: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize==sizeof(CMD_CS_S_ServerOnLine));
if (wDataSize!=sizeof(CMD_CS_S_ServerOnLine)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_CS_S_ServerOnLine * pServerOnLine=(CMD_CS_S_ServerOnLine *)pData;
//<2F><><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>
CGameServerItem * pGameServerItem=m_ServerListManager.SearchGameServer(pServerOnLine->wServerID);
if(pGameServerItem == NULL) return true;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwOldOnlineCount=0;
dwOldOnlineCount = pGameServerItem->m_GameServer.dwOnLineCount;
pGameServerItem->m_GameServer.dwOnLineCount=pServerOnLine->dwOnLineCount;
//Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>
CGameKindItem * pGameKindItem=m_ServerListManager.SearchGameKind(pGameServerItem->m_GameServer.wKindID);
if (pGameKindItem!=NULL)
{
tagGameServer * pGameServer=&pGameServerItem->m_GameServer;
pGameKindItem->m_GameKind.dwOnLineCount -= dwOldOnlineCount;
pGameKindItem->m_GameKind.dwOnLineCount += pGameServer->dwOnLineCount;
}
return true;
}
case SUB_CS_S_SERVER_INSERT: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize%sizeof(tagGameServer)==0);
if (wDataSize%sizeof(tagGameServer)!=0) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wItemCount=wDataSize/sizeof(tagGameServer);
tagGameServer * pGameServer=(tagGameServer *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (WORD i=0;i<wItemCount;i++)
{
m_ServerListManager.InsertGameServer(pGameServer++);
}
return true;
}
case SUB_CS_S_SERVER_MODIFY: //<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize==sizeof(CMD_CS_S_ServerModify));
if (wDataSize!=sizeof(CMD_CS_S_ServerModify)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_CS_S_ServerModify * pServerModify=(CMD_CS_S_ServerModify *)pData;
//<2F><><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>
ASSERT(m_ServerListManager.SearchGameServer(pServerModify->wServerID));
CGameServerItem * pGameServerItem=m_ServerListManager.SearchGameServer(pServerModify->wServerID);
//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD>
if (pGameServerItem!=NULL)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwOldOnlineCount=0, dwOldFullCount=0;
dwOldOnlineCount = pGameServerItem->m_GameServer.dwOnLineCount;
dwOldFullCount = pGameServerItem->m_GameServer.dwFullCount;
//<2F>޸ķ<DEB8><C4B7><EFBFBD><EFBFBD><EFBFBD>Ϣ
pGameServerItem->m_GameServer.wKindID=pServerModify->wKindID;
pGameServerItem->m_GameServer.wNodeID=pServerModify->wNodeID;
pGameServerItem->m_GameServer.wSortID=pServerModify->wSortID;
pGameServerItem->m_GameServer.wServerPort=pServerModify->wServerPort;
pGameServerItem->m_GameServer.dwOnLineCount=pServerModify->dwOnLineCount;
pGameServerItem->m_GameServer.dwFullCount=pServerModify->dwFullCount;
lstrcpyn(pGameServerItem->m_GameServer.szServerName,pServerModify->szServerName,CountArray(pGameServerItem->m_GameServer.szServerName));
lstrcpyn(pGameServerItem->m_GameServer.szServerAddr,pServerModify->szServerAddr,CountArray(pGameServerItem->m_GameServer.szServerAddr));
//Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>
CGameKindItem * pGameKindItem=m_ServerListManager.SearchGameKind(pGameServerItem->m_GameServer.wKindID);
if (pGameKindItem!=NULL)
{
tagGameServer * pGameServer=&pGameServerItem->m_GameServer;
pGameKindItem->m_GameKind.dwOnLineCount -= dwOldOnlineCount;
pGameKindItem->m_GameKind.dwOnLineCount += pGameServer->dwOnLineCount;
pGameKindItem->m_GameKind.dwFullCount -= dwOldFullCount;
pGameKindItem->m_GameKind.dwFullCount += pGameServer->dwFullCount;
}
}
return true;
}
case SUB_CS_S_SERVER_REMOVE: //<2F><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize==sizeof(CMD_CS_S_ServerRemove));
if (wDataSize!=sizeof(CMD_CS_S_ServerRemove)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_CS_S_ServerRemove * pServerRemove=(CMD_CS_S_ServerRemove *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_ServerListManager.DeleteGameServer(pServerRemove->wServerID);
return true;
}
case SUB_CS_S_SERVER_FINISH: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
m_ServerListManager.CleanServerItem();
//<2F>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
CP_ControlResult ControlResult;
ControlResult.cbSuccess=ER_SUCCESS;
SendUIControlPacket(UI_CORRESPOND_RESULT,&ControlResult,sizeof(ControlResult));
return true;
}
case SUB_CS_S_MATCH_INSERT: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize%sizeof(tagGameMatch)==0);
if (wDataSize%sizeof(tagGameMatch)!=0) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wItemCount=wDataSize/sizeof(tagGameMatch);
tagGameMatch * pGameMatch=(tagGameMatch *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (WORD i=0;i<wItemCount;i++)
{
CGameServerItem * pGameServerItem = m_ServerListManager.SearchGameServer(pGameMatch->wServerID);
if(pGameServerItem!=NULL)
{
CopyMemory(&pGameServerItem->m_GameMatch,pGameMatch++,sizeof(pGameServerItem->m_GameMatch));
}
}
return true;
}
}
return true;
}
//Զ<>̷<EFBFBD><CCB7><EFBFBD>
bool CAttemperEngineSink::OnTCPSocketMainRemoteService(WORD wSubCmdID, VOID * pData, WORD wDataSize)
{
switch (wSubCmdID)
{
case SUB_CS_S_SEARCH_CORRESPOND: //Э<><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_CS_S_SearchCorrespond * pSearchCorrespond=(CMD_CS_S_SearchCorrespond *)pData;
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize<=sizeof(CMD_CS_S_SearchCorrespond));
ASSERT(wDataSize>=(sizeof(CMD_CS_S_SearchCorrespond)-sizeof(pSearchCorrespond->UserRemoteInfo)));
ASSERT(wDataSize==(sizeof(CMD_CS_S_SearchCorrespond)-sizeof(pSearchCorrespond->UserRemoteInfo)+pSearchCorrespond->wUserCount*sizeof(pSearchCorrespond->UserRemoteInfo[0])));
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (wDataSize>sizeof(CMD_CS_S_SearchCorrespond)) return false;
if (wDataSize<(sizeof(CMD_CS_S_SearchCorrespond)-sizeof(pSearchCorrespond->UserRemoteInfo))) return false;
if (wDataSize!=(sizeof(CMD_CS_S_SearchCorrespond)-sizeof(pSearchCorrespond->UserRemoteInfo)+pSearchCorrespond->wUserCount*sizeof(pSearchCorrespond->UserRemoteInfo[0]))) return false;
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(pSearchCorrespond->dwSocketID)<m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter+LOWORD(pSearchCorrespond->dwSocketID))->dwSocketID!=pSearchCorrespond->dwSocketID) return true;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_GP_S_SearchCorrespond SearchCorrespond;
ZeroMemory(&SearchCorrespond,sizeof(SearchCorrespond));
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
for (WORD i=0;i<pSearchCorrespond->wUserCount;i++)
{
//<2F><><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
ASSERT(SearchCorrespond.wUserCount<CountArray(SearchCorrespond.UserRemoteInfo));
if (SearchCorrespond.wUserCount>=CountArray(SearchCorrespond.UserRemoteInfo)) break;
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
WORD wIndex=SearchCorrespond.wUserCount++;
CopyMemory(&SearchCorrespond.UserRemoteInfo[wIndex],&pSearchCorrespond->UserRemoteInfo[i],sizeof(SearchCorrespond.UserRemoteInfo[wIndex]));
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wHeadSize=sizeof(SearchCorrespond)-sizeof(SearchCorrespond.UserRemoteInfo);
WORD wItemSize=sizeof(SearchCorrespond.UserRemoteInfo[0])*SearchCorrespond.wUserCount;
m_pITCPNetworkEngine->SendData(pSearchCorrespond->dwSocketID,MDM_GP_REMOTE_SERVICE,SUB_GP_S_SEARCH_CORRESPOND,&SearchCorrespond,wHeadSize+wItemSize);
return true;
}
}
return true;
}
//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
bool CAttemperEngineSink::OnTCPNetworkMainPCLogon(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID)
{
switch (wSubCmdID)
{
case SUB_GP_LOGON_ACCOUNTS: //<2F>ʺŵ<CABA>¼
{
return OnTCPNetworkSubPCLogonAccounts(pData,wDataSize,dwSocketID);
}
case SUB_GP_REGISTER_ACCOUNTS: //<2F>ʺ<EFBFBD>ע<EFBFBD><D7A2>
{
return OnTCPNetworkSubPCRegisterAccounts(pData,wDataSize,dwSocketID);
}
}
return false;
}
//<2F>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
bool CAttemperEngineSink::OnTCPNetworkMainPCServerList(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID)
{
switch (wSubCmdID)
{
case SUB_GP_GET_LIST: //<2F><>ȡ<EFBFBD>б<EFBFBD>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
SendGameTypeInfo(dwSocketID);
SendGameKindInfo(dwSocketID);
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
if (m_pInitParameter->m_cbDelayList==TRUE)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
SendGamePageInfo(dwSocketID,INVALID_WORD);
SendGameNodeInfo(dwSocketID,INVALID_WORD);
SendGameServerInfo(dwSocketID,INVALID_WORD);
}
else
{
//<2F><><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>
SendGamePageInfo(dwSocketID,0);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_FINISH);
return true;
}
case SUB_GP_GET_SERVER: //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize%sizeof(WORD)==0);
if (wDataSize%sizeof(WORD)!=0) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
UINT nKindCount=wDataSize/sizeof(WORD);
for (UINT i=0;i<nKindCount;i++)
{
SendGameNodeInfo(dwSocketID,((WORD *)pData)[i]);
SendGamePageInfo(dwSocketID,((WORD *)pData)[i]);
SendGameServerInfo(dwSocketID,((WORD *)pData)[i]);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_SERVER_FINISH,pData,wDataSize);
return true;
}
case SUB_GP_GET_ONLINE: //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_GP_GetOnline * pGetOnline=(CMD_GP_GetOnline *)pData;
WORD wHeadSize=(sizeof(CMD_GP_GetOnline)-sizeof(pGetOnline->wOnLineServerID));
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT((wDataSize>=wHeadSize)&&(wDataSize==(wHeadSize+pGetOnline->wServerCount*sizeof(WORD))));
if ((wDataSize<wHeadSize)||(wDataSize!=(wHeadSize+pGetOnline->wServerCount*sizeof(WORD)))) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_GP_KindOnline KindOnline;
CMD_GP_ServerOnline ServerOnline;
ZeroMemory(&KindOnline,sizeof(KindOnline));
ZeroMemory(&ServerOnline,sizeof(ServerOnline));
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
POSITION KindPosition=NULL;
do
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
CGameKindItem * pGameKindItem=m_ServerListManager.EmunGameKindItem(KindPosition);
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
if (pGameKindItem!=NULL)
{
WORD wKindIndex=KindOnline.wKindCount++;
KindOnline.OnLineInfoKind[wKindIndex].wKindID=pGameKindItem->m_GameKind.wKindID;
KindOnline.OnLineInfoKind[wKindIndex].dwOnLineCount=pGameKindItem->m_GameKind.dwOnLineCount;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
if (KindOnline.wKindCount>=CountArray(KindOnline.OnLineInfoKind))
{
ASSERT(FALSE);
break;
}
} while (KindPosition!=NULL);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
for (WORD i=0;i<pGetOnline->wServerCount;i++)
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
WORD wServerID=pGetOnline->wOnLineServerID[i];
CGameServerItem * pGameServerItem=m_ServerListManager.SearchGameServer(wServerID);
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
if (pGameServerItem!=NULL)
{
WORD wServerIndex=ServerOnline.wServerCount++;
ServerOnline.OnLineInfoServer[wServerIndex].wServerID=wServerID;
ServerOnline.OnLineInfoServer[wServerIndex].dwOnLineCount=pGameServerItem->m_GameServer.dwOnLineCount;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
if (ServerOnline.wServerCount>=CountArray(ServerOnline.OnLineInfoServer))
{
ASSERT(FALSE);
break;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (KindOnline.wKindCount>0)
{
WORD wHeadSize=sizeof(KindOnline)-sizeof(KindOnline.OnLineInfoKind);
WORD wSendSize=wHeadSize+KindOnline.wKindCount*sizeof(KindOnline.OnLineInfoKind[0]);
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GR_KINE_ONLINE,&KindOnline,wSendSize);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (ServerOnline.wServerCount>0)
{
WORD wHeadSize=sizeof(ServerOnline)-sizeof(ServerOnline.OnLineInfoServer);
WORD wSendSize=wHeadSize+ServerOnline.wServerCount*sizeof(ServerOnline.OnLineInfoServer[0]);
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GR_SERVER_ONLINE,&ServerOnline,wSendSize);
}
return true;
}
case SUB_GP_GET_COLLECTION: //<2F><>ȡ<EFBFBD>ղ<EFBFBD>
{
return true;
}
}
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CAttemperEngineSink::OnTCPNetworkMainPCUserService(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID)
{
switch (wSubCmdID)
{
case SUB_GP_GAME_RECORD_LIST://<2F><>Ϸ<EFBFBD><CFB7>¼
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize==sizeof(CMD_GP_GetGameRecord_List));
if (wDataSize!=sizeof(CMD_GP_GetGameRecord_List)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_GP_GetGameRecord_List * pNetInfo=(CMD_GP_GetGameRecord_List *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBR_GP_GameRecordList kDBInfo;
ZeroMemory(&kDBInfo,sizeof(kDBInfo));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kDBInfo.dwUserID = pNetInfo->dwUserID;
kDBInfo.wKindID = pNetInfo->wKindID;
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_GAME_RECORD_LIST,dwSocketID,&kDBInfo,sizeof(kDBInfo));
return true;
}
case SUB_GP_GAME_RECORD_TOTAL://<2F><>Ϸ<EFBFBD><CFB7>¼
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize==sizeof(CMD_GP_GetGameTotalRecord));
if (wDataSize!=sizeof(CMD_GP_GetGameTotalRecord)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_GP_GetGameTotalRecord * pNetInfo=(CMD_GP_GetGameTotalRecord *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBR_GP_GetGameTotalRecord kDBInfo;
ZeroMemory(&kDBInfo,sizeof(kDBInfo));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kDBInfo.dwUserID = pNetInfo->dwUserID;
kDBInfo.dwRecordID = pNetInfo->dwRecordID;
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_GAME_TOTAL_RECORD,dwSocketID,&kDBInfo,sizeof(kDBInfo));
return true;
}
case SUB_GP_GAME_RECORD_CHILD: //<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize == sizeof(CMD_GP_GetGameTotalRecord));
if (wDataSize != sizeof(CMD_GP_GetGameTotalRecord)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_GP_GetGameTotalRecord * pNetInfo = (CMD_GP_GetGameTotalRecord *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBR_GP_GetGameTotalRecord kDBInfo;
ZeroMemory(&kDBInfo, sizeof(kDBInfo));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kDBInfo.dwUserID = pNetInfo->dwUserID;
kDBInfo.dwRecordID = pNetInfo->dwRecordID;
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_GAME_CHILD_RECORD, dwSocketID, &kDBInfo, sizeof(kDBInfo));
return true;
}
case SUB_GP_QUERY_PUBLIC_NOTICE://<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ֶβ<D6B6>ѯ
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize==sizeof(CMD_GP_QueryNotice));
if (wDataSize!=sizeof(CMD_GP_QueryNotice)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_GP_QueryNotice * pNetInfo=(CMD_GP_QueryNotice *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBR_GP_PublicNotic kDBInfo;
ZeroMemory(&kDBInfo,sizeof(kDBInfo));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
lstrcpyn(kDBInfo.szKeyName,pNetInfo->szKeyName,CountArray(kDBInfo.szKeyName));
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_PUBLIC_NOTIC,dwSocketID,&kDBInfo,sizeof(kDBInfo));
return true;
}
case SUB_GP_MODIFY_MACHINE: //<2F>󶨻<EFBFBD><F3B6A8BB><EFBFBD>
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize==sizeof(CMD_GP_ModifyMachine));
if (wDataSize!=sizeof(CMD_GP_ModifyMachine)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_GP_ModifyMachine * pModifyMachine=(CMD_GP_ModifyMachine *)pData;
pModifyMachine->szPassword[CountArray(pModifyMachine->szPassword)-1]=0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBR_GP_ModifyMachine ModifyMachine;
ZeroMemory(&ModifyMachine,sizeof(ModifyMachine));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ModifyMachine.cbBind=pModifyMachine->cbBind;
ModifyMachine.dwUserID=pModifyMachine->dwUserID;
ModifyMachine.dwClientAddr=(m_pBindParameter+LOWORD(dwSocketID))->dwClientAddr;
lstrcpyn(ModifyMachine.szPassword,pModifyMachine->szPassword,CountArray(ModifyMachine.szPassword));
lstrcpyn(ModifyMachine.szMachineID,pModifyMachine->szMachineID,CountArray(ModifyMachine.szMachineID));
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_MODIFY_MACHINE,dwSocketID,&ModifyMachine,sizeof(ModifyMachine));
return true;
}
case SUB_GP_MODIFY_LOGON_PASS: //<2F>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize==sizeof(CMD_GP_ModifyLogonPass));
if (wDataSize!=sizeof(CMD_GP_ModifyLogonPass)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_GP_ModifyLogonPass * pModifyLogonPass=(CMD_GP_ModifyLogonPass *)pData;
pModifyLogonPass->szDesPassword[CountArray(pModifyLogonPass->szDesPassword)-1]=0;
pModifyLogonPass->szScrPassword[CountArray(pModifyLogonPass->szScrPassword)-1]=0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBR_GP_ModifyLogonPass ModifyLogonPass;
ZeroMemory(&ModifyLogonPass,sizeof(ModifyLogonPass));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ModifyLogonPass.dwUserID=pModifyLogonPass->dwUserID;
ModifyLogonPass.dwClientAddr=(m_pBindParameter+LOWORD(dwSocketID))->dwClientAddr;
lstrcpyn(ModifyLogonPass.szDesPassword,pModifyLogonPass->szDesPassword,CountArray(ModifyLogonPass.szDesPassword));
lstrcpyn(ModifyLogonPass.szScrPassword,pModifyLogonPass->szScrPassword,CountArray(ModifyLogonPass.szScrPassword));
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_MODIFY_LOGON_PASS,dwSocketID,&ModifyLogonPass,sizeof(ModifyLogonPass));
return true;
}
case SUB_GP_QUERY_INDIVIDUAL: //<2F><>ѯ<EFBFBD><D1AF>Ϣ
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize==sizeof(CMD_GP_QueryIndividual));
if (wDataSize!=sizeof(CMD_GP_QueryIndividual)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_GP_QueryIndividual * pQueryIndividual=(CMD_GP_QueryIndividual *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBR_GP_QueryIndividual QueryIndividual;
ZeroMemory(&QueryIndividual,sizeof(QueryIndividual));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QueryIndividual.dwUserID=pQueryIndividual->dwUserID;
QueryIndividual.dwClientAddr=(m_pBindParameter+LOWORD(dwSocketID))->dwClientAddr;
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_QUERY_INDIVIDUAL,dwSocketID,&QueryIndividual,sizeof(QueryIndividual));
return true;
}
case SUB_GP_QUERY_ACCOUNTINFO: //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize==sizeof(CMD_GP_QueryAccountInfo));
if (wDataSize!=sizeof(CMD_GP_QueryAccountInfo)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_GP_QueryAccountInfo * pQueryIndividual=(CMD_GP_QueryAccountInfo *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBR_GP_QueryAccountInfo QueryIndividual;
ZeroMemory(&QueryIndividual,sizeof(QueryIndividual));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QueryIndividual.dwUserID=pQueryIndividual->dwUserID;
QueryIndividual.dwClientAddr=(m_pBindParameter+LOWORD(dwSocketID))->dwClientAddr;
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_QUERY_ACCOUNTINFO,dwSocketID,&QueryIndividual,sizeof(QueryIndividual));
return true;
}
case SUB_GP_QUERY_INGAME_SEVERID: //<2F><>ѯ<EFBFBD><D1AF>Ϸ״̬
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize==sizeof(CMD_GP_UserInGameServerID));
if (wDataSize!=sizeof(CMD_GP_UserInGameServerID)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_GP_UserInGameServerID * pNetInfo=(CMD_GP_UserInGameServerID *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBR_GP_QueryUserInGameServerID kDBInfo;
ZeroMemory(&kDBInfo,sizeof(kDBInfo));
kDBInfo.dwUserID=pNetInfo->dwUserID;
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_USER_INGAME_SERVERID,dwSocketID,&kDBInfo,sizeof(kDBInfo));
return true;
}
case SUB_GP_MODIFY_INDIVIDUAL: //<2F>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize>=sizeof(CMD_GP_ModifyIndividual));
if (wDataSize<sizeof(CMD_GP_ModifyIndividual)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_GP_ModifyIndividual * pModifyIndividual=(CMD_GP_ModifyIndividual *)pData;
pModifyIndividual->szPassword[CountArray(pModifyIndividual->szPassword)-1]=0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBR_GP_ModifyIndividual ModifyIndividual;
ZeroMemory(&ModifyIndividual,sizeof(ModifyIndividual));
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
ModifyIndividual.dwUserID=pModifyIndividual->dwUserID;
ModifyIndividual.cbGender=pModifyIndividual->cbGender;
ModifyIndividual.dwClientAddr=(m_pBindParameter+LOWORD(dwSocketID))->dwClientAddr;
lstrcpyn(ModifyIndividual.szPassword,pModifyIndividual->szPassword,CountArray(ModifyIndividual.szPassword));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VOID * pDataBuffer=NULL;
tagDataDescribe DataDescribe;
CRecvPacketHelper RecvPacket(pModifyIndividual+1,wDataSize-sizeof(CMD_GP_ModifyIndividual));
//<2F><>չ<EFBFBD><D5B9>Ϣ
while (true)
{
pDataBuffer=RecvPacket.GetData(DataDescribe);
if (DataDescribe.wDataDescribe==DTP_NULL) break;
switch (DataDescribe.wDataDescribe)
{
case DTP_GP_UI_NICKNAME: //<2F>û<EFBFBD><C3BB>dz<EFBFBD>
{
ASSERT(pDataBuffer!=NULL);
ASSERT(DataDescribe.wDataSize<=sizeof(ModifyIndividual.szNickName));
if (DataDescribe.wDataSize<=sizeof(ModifyIndividual.szNickName))
{
CopyMemory(&ModifyIndividual.szNickName,pDataBuffer,DataDescribe.wDataSize);
ModifyIndividual.szNickName[CountArray(ModifyIndividual.szNickName)-1]=0;
2026-03-01 13:48:24 +08:00
//ConvertUtf8ToGBK(ModifyIndividual.szNickName, LEN_NICKNAME);
2026-02-13 14:34:15 +08:00
}
break;
}
case DTP_GP_UI_USER_NOTE: //<2F>û<EFBFBD><C3BB><EFBFBD>ע
{
ASSERT(pDataBuffer!=NULL);
ASSERT(DataDescribe.wDataSize<=sizeof(ModifyIndividual.szUserNote));
if (DataDescribe.wDataSize<=sizeof(ModifyIndividual.szUserNote))
{
CopyMemory(&ModifyIndividual.szUserNote,pDataBuffer,DataDescribe.wDataSize);
ModifyIndividual.szUserNote[CountArray(ModifyIndividual.szUserNote)-1]=0;
}
break;
}
case DTP_GP_UI_COMPELLATION: //<2F><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
{
ASSERT(pDataBuffer!=NULL);
ASSERT(DataDescribe.wDataSize<=sizeof(ModifyIndividual.szCompellation));
if (DataDescribe.wDataSize<=sizeof(ModifyIndividual.szCompellation))
{
CopyMemory(&ModifyIndividual.szCompellation,pDataBuffer,DataDescribe.wDataSize);
ModifyIndividual.szCompellation[CountArray(ModifyIndividual.szCompellation)-1]=0;
}
break;
}
case DTP_GP_UI_MOBILE_PHONE: //<2F>ƶ<EFBFBD><C6B6>
{
ASSERT(pDataBuffer!=NULL);
ASSERT(DataDescribe.wDataSize<=sizeof(ModifyIndividual.szMobilePhone));
if (DataDescribe.wDataSize<=sizeof(ModifyIndividual.szMobilePhone))
{
CopyMemory(ModifyIndividual.szMobilePhone,pDataBuffer,DataDescribe.wDataSize);
ModifyIndividual.szMobilePhone[CountArray(ModifyIndividual.szMobilePhone)-1]=0;
}
break;
}
case DTP_GP_UI_DWELLING_PLACE: //<2F><>ϵ<EFBFBD><CFB5>ַ
{
ASSERT(pDataBuffer!=NULL);
ASSERT(DataDescribe.wDataSize<=sizeof(ModifyIndividual.szDwellingPlace));
if (DataDescribe.wDataSize<=sizeof(ModifyIndividual.szDwellingPlace))
{
CopyMemory(ModifyIndividual.szDwellingPlace,pDataBuffer,DataDescribe.wDataSize);
ModifyIndividual.szDwellingPlace[CountArray(ModifyIndividual.szDwellingPlace)-1]=0;
}
break;
}
case DTP_GP_UI_HEAD_HTTP: //ͷ<><CDB7><EFBFBD><EFBFBD>ַ
{
ASSERT(pDataBuffer!=NULL);
ASSERT(DataDescribe.wDataSize<=sizeof(ModifyIndividual.szHeadHttp));
if (DataDescribe.wDataSize<=sizeof(ModifyIndividual.szHeadHttp))
{
CopyMemory(ModifyIndividual.szHeadHttp,pDataBuffer,DataDescribe.wDataSize);
ModifyIndividual.szHeadHttp[CountArray(ModifyIndividual.szHeadHttp)-1]=0;
}
break;
}
case DTP_GP_UI_CHANNEL: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
ASSERT(pDataBuffer!=NULL);
ASSERT(DataDescribe.wDataSize<=sizeof(ModifyIndividual.szUserChannel));
if (DataDescribe.wDataSize<=sizeof(ModifyIndividual.szUserChannel))
{
CopyMemory(ModifyIndividual.szUserChannel,pDataBuffer,DataDescribe.wDataSize);
ModifyIndividual.szUserChannel[CountArray(ModifyIndividual.szUserChannel)-1]=0;
}
break;
}
}
}
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_MODIFY_INDIVIDUAL,dwSocketID,&ModifyIndividual,sizeof(ModifyIndividual));
return true;
}
case SUB_GP_MXSHARE_SUCCESS:
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize == sizeof(CMD_GP_WXShareSuccess));
if (wDataSize != sizeof(CMD_GP_WXShareSuccess)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_GP_WXShareSuccess * pWXShare = (CMD_GP_WXShareSuccess *)pData;
pWXShare->szPassword[CountArray(pWXShare->szPassword) - 1] = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBR_GP_WXShareSuccess mSuccess;
ZeroMemory(&mSuccess, sizeof(mSuccess));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mSuccess.dwUserID = pWXShare->dwUserID;
lstrcpyn(mSuccess.szPassword, pWXShare->szPassword, CountArray(mSuccess.szPassword));
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_USER_WXSHARE_SUCCESS, dwSocketID, &mSuccess, sizeof(mSuccess));
return true;
}
case SUB_GP_QUERY_USER_INFO_REQUEST: //<2F><>ѯ<EFBFBD>û<EFBFBD>
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize==sizeof(CMD_GP_QueryUserInfoRequest));
if (wDataSize!=sizeof(CMD_GP_QueryUserInfoRequest)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_GP_QueryUserInfoRequest * pQueryUserInfoRequest=(CMD_GP_QueryUserInfoRequest *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBR_GP_QueryInsureUserInfo QueryInsureUserInfo;
ZeroMemory(&QueryInsureUserInfo,sizeof(QueryInsureUserInfo));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QueryInsureUserInfo.cbByNickName=pQueryUserInfoRequest->cbByNickName;
lstrcpyn(QueryInsureUserInfo.szNickName,pQueryUserInfoRequest->szNickName,CountArray(QueryInsureUserInfo.szNickName));
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_QUERY_USER_INFO,dwSocketID,&QueryInsureUserInfo,sizeof(QueryInsureUserInfo));
return true;
}
case SUB_GP_QUERY_IN_MATCH:
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize == sizeof(CMD_GP_QUERY_IN_MATCH));
if (wDataSize != sizeof(CMD_GP_QUERY_IN_MATCH)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
CMD_GP_QUERY_IN_MATCH * pNetInfo = (CMD_GP_QUERY_IN_MATCH *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
DBR_GP_QueryInMatch kDBInfo;
ZeroMemory(&kDBInfo, sizeof(kDBInfo));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
kDBInfo.dwUserID = pNetInfo->dwUserID;
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_QUERY_IN_MATCH, dwSocketID, &kDBInfo, sizeof(kDBInfo));
return true;
}
case SUB_GP_QUERY_IN_UNION:
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize == sizeof(CMD_GP_UserInUnion));
if (wDataSize != sizeof(CMD_GP_UserInUnion)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
CMD_GP_UserInUnion * pNetInfo = (CMD_GP_UserInUnion *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
DBR_GP_UserInUnion kDBInfo;
ZeroMemory(&kDBInfo, sizeof(kDBInfo));
kDBInfo.dwUserID = pNetInfo->dwUserID;
kDBInfo.dwUnionCode = pNetInfo->dwUnionCode;
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_QUERY_IN_UNION, dwSocketID, &kDBInfo, sizeof(kDBInfo));
return true;
}
case SUB_GP_GET_UNION_LIST:
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize == sizeof(CMD_GP_GetUnionList));
if (wDataSize != sizeof(CMD_GP_GetUnionList)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
CMD_GP_GetUnionList* pGetUnionList = (CMD_GP_GetUnionList *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
DBR_GP_GetUnionList kDBInfo;
ZeroMemory(&kDBInfo, sizeof(kDBInfo));
kDBInfo.dwUserID = pGetUnionList->dwUserID;
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_GET_UNION_LIST, dwSocketID, &kDBInfo, sizeof(kDBInfo));
return true;
}
case SUB_GP_GET_UNION_ROOM_LIST:
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize == sizeof(CMD_GR_GetUnionRoomInfo));
if (wDataSize != sizeof(CMD_GR_GetUnionRoomInfo)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
CMD_GR_GetUnionRoomInfo* pGetUnionList = (CMD_GR_GetUnionRoomInfo *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
DBR_GP_GetUnionRoomList kDBInfo;
ZeroMemory(&kDBInfo, sizeof(kDBInfo));
kDBInfo.dwUserID = pGetUnionList->dwUserID;
kDBInfo.dwUnionCode = pGetUnionList->dwUnionCode;
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_GET_UNION_ROOM_LIST, dwSocketID, &kDBInfo, sizeof(kDBInfo));
return true;
}
case SUB_GP_GET_AUTO_ROOM_LIST:
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize == sizeof(CMD_GP_GetUnionList));
if (wDataSize != sizeof(CMD_GP_GetUnionList)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
CMD_GP_GetAutoRoomList* pGetAutoList = (CMD_GP_GetAutoRoomList *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
DBR_GP_GetAutoRoomList kDBInfo;
ZeroMemory(&kDBInfo, sizeof(kDBInfo));
kDBInfo.dwUserID = pGetAutoList->dwUserID;
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_GET_AUTO_ROOM_LIST, dwSocketID, &kDBInfo, sizeof(kDBInfo));
return true;
}
}
return false;
}
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
VOID CAttemperEngineSink::SendOperateFailure(DWORD dwContextID, LONG lResultCode, LPCTSTR pszDescribe)
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(pszDescribe != NULL);
if(pszDescribe == NULL) return;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_GP_OperateFailure OperateFailure;
ZeroMemory(&OperateFailure,sizeof(OperateFailure));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OperateFailure.lResultCode=lResultCode;
lstrcpyn(OperateFailure.szDescribeString,pszDescribe,CountArray(OperateFailure.szDescribeString));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wDescribe=CountStringBuffer(OperateFailure.szDescribeString);
WORD wHeadSize=sizeof(OperateFailure)-sizeof(OperateFailure.szDescribeString);
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_USER_SERVICE,SUB_GP_OPERATE_FAILURE,&OperateFailure,wHeadSize+wDescribe);
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
return;
}
//Զ<>̴<EFBFBD><CCB4><EFBFBD>
bool CAttemperEngineSink::OnTCPNetworkMainPCRemoteService(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID)
{
switch (wSubCmdID)
{
case SUB_GP_C_SEARCH_CORRESPOND: //Э<><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize==sizeof(CMD_GP_C_SearchCorrespond));
if (wDataSize!=sizeof(CMD_GP_C_SearchCorrespond)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_GP_C_SearchCorrespond * pSearchCorrespond=(CMD_GP_C_SearchCorrespond *)pData;
pSearchCorrespond->szNickName[CountArray(pSearchCorrespond->szNickName)-1]=0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_CS_C_SearchCorrespond SearchCorrespond;
ZeroMemory(&SearchCorrespond,sizeof(SearchCorrespond));
//<2F><><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>
SearchCorrespond.dwSocketID=dwSocketID;
SearchCorrespond.dwClientAddr=(m_pBindParameter+LOWORD(dwSocketID))->dwClientAddr;
//<2F><><EFBFBD>ұ<EFBFBD><D2B1><EFBFBD>
SearchCorrespond.dwGameID=pSearchCorrespond->dwGameID;
lstrcpyn(SearchCorrespond.szNickName,pSearchCorrespond->szNickName,CountArray(SearchCorrespond.szNickName));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pITCPSocketService->SendData(MDM_CS_REMOTE_SERVICE,SUB_CS_C_SEARCH_CORRESPOND,&SearchCorrespond,sizeof(SearchCorrespond));
return true;
}
}
return false;
}
//<2F>ʺŵ<CABA>¼
bool CAttemperEngineSink::OnTCPNetworkSubPCLogonAccounts(VOID * pData, WORD wDataSize, DWORD dwSocketID)
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize>=sizeof(CMD_GP_LogonAccounts));
if (wDataSize<sizeof(CMD_GP_LogonAccounts))
{
if (wDataSize<sizeof(CMD_GP_LogonAccounts)-sizeof(BYTE))
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wBindIndex=LOWORD(dwSocketID);
tagBindParameter * pBindParameter=(m_pBindParameter+wBindIndex);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_GP_LogonAccounts * pLogonAccounts=(CMD_GP_LogonAccounts *)pData;
pLogonAccounts->szAccounts[CountArray(pLogonAccounts->szAccounts)-1]=0;
pLogonAccounts->szPassword[CountArray(pLogonAccounts->szPassword)-1]=0;
pLogonAccounts->szMachineID[CountArray(pLogonAccounts->szMachineID)-1]=0;
pLogonAccounts->szOpenId[CountArray(pLogonAccounts->szOpenId) - 1] = 0;
pLogonAccounts->szUnionid[CountArray(pLogonAccounts->szUnionid) - 1] = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pBindParameter->cbClientKind=CLIENT_KIND_COMPUTER;
pBindParameter->dwPlazaVersion=pLogonAccounts->dwPlazaVersion;
//<2F><EFBFBD>ж<EFBFBD>
if (CheckPlazaVersion(DEVICE_TYPE_PC,pLogonAccounts->dwPlazaVersion,dwSocketID,((pLogonAccounts->cbValidateFlags&LOW_VER_VALIDATE_FLAGS)!=0))==false)
{
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBR_GP_LogonAccounts LogonAccounts;
ZeroMemory(&LogonAccounts,sizeof(LogonAccounts));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
LogonAccounts.pBindParameter=(m_pBindParameter+LOWORD(dwSocketID));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LogonAccounts.dwClientAddr=(m_pBindParameter+LOWORD(dwSocketID))->dwClientAddr;
lstrcpyn(LogonAccounts.szAccounts,pLogonAccounts->szAccounts,CountArray(LogonAccounts.szAccounts));
lstrcpyn(LogonAccounts.szPassword,pLogonAccounts->szPassword,CountArray(LogonAccounts.szPassword));
lstrcpyn(LogonAccounts.szMachineID,pLogonAccounts->szMachineID,CountArray(LogonAccounts.szMachineID));
lstrcpyn(LogonAccounts.szOpenId, pLogonAccounts->szOpenId, CountArray(LogonAccounts.szOpenId));
lstrcpyn(LogonAccounts.szUnionid, pLogonAccounts->szUnionid, CountArray(LogonAccounts.szUnionid));
LogonAccounts.cbNeeValidateMBCard=(pLogonAccounts->cbValidateFlags&MB_VALIDATE_FLAGS);
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_LOGON_ACCOUNTS,dwSocketID,&LogonAccounts,sizeof(LogonAccounts));
return true;
}
//<2F>ʺ<EFBFBD>ע<EFBFBD><D7A2>
bool CAttemperEngineSink::OnTCPNetworkSubPCRegisterAccounts(VOID * pData, WORD wDataSize, DWORD dwSocketID)
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize>=sizeof(CMD_GP_RegisterAccounts));
if (wDataSize<sizeof(CMD_GP_RegisterAccounts))
{
if (wDataSize<sizeof(CMD_GP_RegisterAccounts)-sizeof(BYTE))
return false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wBindIndex=LOWORD(dwSocketID);
tagBindParameter * pBindParameter=(m_pBindParameter+wBindIndex);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_GP_RegisterAccounts * pRegisterAccounts=(CMD_GP_RegisterAccounts *)pData;
2026-03-01 13:48:24 +08:00
//ConvertUtf8ToGBK(pRegisterAccounts->szNickName,LEN_NICKNAME);
2026-02-13 14:34:15 +08:00
pRegisterAccounts->szOpenId[CountArray(pRegisterAccounts->szOpenId) - 1] = 0;
pRegisterAccounts->szUnionid[CountArray(pRegisterAccounts->szUnionid) - 1] = 0;
pRegisterAccounts->szAccounts[CountArray(pRegisterAccounts->szAccounts)-1]=0;
pRegisterAccounts->szNickName[CountArray(pRegisterAccounts->szNickName)-1]=0;
pRegisterAccounts->szSpreader[CountArray(pRegisterAccounts->szSpreader)-1]=0;
pRegisterAccounts->szMachineID[CountArray(pRegisterAccounts->szMachineID)-1]=0;
pRegisterAccounts->szLogonPass[CountArray(pRegisterAccounts->szLogonPass)-1]=0;
pRegisterAccounts->szInsurePass[CountArray(pRegisterAccounts->szInsurePass)-1]=0;
pRegisterAccounts->szPassPortID[CountArray(pRegisterAccounts->szPassPortID)-1]=0;
pRegisterAccounts->szCompellation[CountArray(pRegisterAccounts->szCompellation)-1]=0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pBindParameter->cbClientKind=CLIENT_KIND_COMPUTER;
pBindParameter->dwPlazaVersion=pRegisterAccounts->dwPlazaVersion;
//Ч<><D0A7><EFBFBD>
if (CheckPlazaVersion(DEVICE_TYPE_PC,pRegisterAccounts->dwPlazaVersion,dwSocketID,((pRegisterAccounts->cbValidateFlags&LOW_VER_VALIDATE_FLAGS)!=0))==false)
{
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBR_GP_RegisterAccounts RegisterAccounts;
ZeroMemory(&RegisterAccounts,sizeof(RegisterAccounts));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
RegisterAccounts.pBindParameter=(m_pBindParameter+LOWORD(dwSocketID));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RegisterAccounts.wFaceID=pRegisterAccounts->wFaceID;
RegisterAccounts.cbGender=pRegisterAccounts->cbGender;
RegisterAccounts.dwClientAddr=(m_pBindParameter+LOWORD(dwSocketID))->dwClientAddr;
lstrcpyn(RegisterAccounts.szOpenId, pRegisterAccounts->szOpenId, CountArray(RegisterAccounts.szOpenId));
lstrcpyn(RegisterAccounts.szUnionid, pRegisterAccounts->szUnionid, CountArray(RegisterAccounts.szUnionid));
lstrcpyn(RegisterAccounts.szAccounts,pRegisterAccounts->szAccounts,CountArray(RegisterAccounts.szAccounts));
lstrcpyn(RegisterAccounts.szNickName,pRegisterAccounts->szNickName,CountArray(RegisterAccounts.szNickName));
lstrcpyn(RegisterAccounts.szSpreader,pRegisterAccounts->szSpreader,CountArray(RegisterAccounts.szSpreader));
lstrcpyn(RegisterAccounts.szMachineID,pRegisterAccounts->szMachineID,CountArray(RegisterAccounts.szMachineID));
lstrcpyn(RegisterAccounts.szLogonPass,pRegisterAccounts->szLogonPass,CountArray(RegisterAccounts.szLogonPass));
lstrcpyn(RegisterAccounts.szInsurePass,pRegisterAccounts->szInsurePass,CountArray(RegisterAccounts.szInsurePass));
lstrcpyn(RegisterAccounts.szPassPortID,pRegisterAccounts->szPassPortID,CountArray(RegisterAccounts.szPassPortID));
lstrcpyn(RegisterAccounts.szCompellation,pRegisterAccounts->szCompellation,CountArray(RegisterAccounts.szCompellation));
//Ͷ<><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pIDataBaseEngine->PostDataBaseRequest(DBR_GP_REGISTER_ACCOUNTS,dwSocketID,&RegisterAccounts,sizeof(RegisterAccounts));
return true;
}
//<2F><>¼<EFBFBD>ɹ<EFBFBD>
bool CAttemperEngineSink::OnDBPCLogonSuccess(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE cbDataBuffer[SOCKET_TCP_PACKET];
DBO_GP_LogonSuccess * pDBOLogonSuccess=(DBO_GP_LogonSuccess *)pData;
CMD_GP_LogonSuccess * pCMDLogonSuccess=(CMD_GP_LogonSuccess *)cbDataBuffer;
//<2F><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
WORD wHeadSize=sizeof(CMD_GP_LogonSuccess);
CSendPacketHelper SendPacket(cbDataBuffer+wHeadSize,sizeof(cbDataBuffer)-wHeadSize);
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
ZeroMemory(pCMDLogonSuccess,sizeof(CMD_GP_LogonSuccess));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pCMDLogonSuccess->wFaceID=pDBOLogonSuccess->wFaceID;
pCMDLogonSuccess->cbGender=pDBOLogonSuccess->cbGender;
pCMDLogonSuccess->dwGameID=pDBOLogonSuccess->dwGameID;
pCMDLogonSuccess->dwUserID=pDBOLogonSuccess->dwUserID;
pCMDLogonSuccess->dwCustomID=pDBOLogonSuccess->dwCustomID;
pCMDLogonSuccess->dwUserMedal=pDBOLogonSuccess->dwUserMedal;
pCMDLogonSuccess->dwExperience=pDBOLogonSuccess->dwExperience;
pCMDLogonSuccess->dwLoveLiness=pDBOLogonSuccess->dwLoveLiness;
pCMDLogonSuccess->cbWXShareTimes = pDBOLogonSuccess->cbWXShareTimes;
pCMDLogonSuccess->dwSpreaderID=pDBOLogonSuccess->dwSpreaderID;
pCMDLogonSuccess->cbMoorMachine=pDBOLogonSuccess->cbMoorMachine;
pCMDLogonSuccess->cbInsureEnabled=pDBOLogonSuccess->cbInsureEnabled;
lstrcpyn(pCMDLogonSuccess->szAccounts,pDBOLogonSuccess->szAccounts,CountArray(pCMDLogonSuccess->szAccounts));
lstrcpyn(pCMDLogonSuccess->szNickName,pDBOLogonSuccess->szNickName,CountArray(pCMDLogonSuccess->szNickName));
//<2F>û<EFBFBD><C3BB>ɼ<EFBFBD>
pCMDLogonSuccess->lUserScore=pDBOLogonSuccess->lUserScore;
pCMDLogonSuccess->lUserInsure=pDBOLogonSuccess->lUserInsure;
pCMDLogonSuccess->lGrade = pDBOLogonSuccess->lGrade;
pCMDLogonSuccess->isLottery = pDBOLogonSuccess->isLottery;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
pCMDLogonSuccess->cbShowServerStatus=m_bShowServerStatus?1:0;
////<2F><>Ա<EFBFBD><D4B1>Ϣ
//if (pDBOLogonSuccess->cbMemberOrder!=0)
//{
// DTP_GP_MemberInfo MemberInfo;
// ZeroMemory(&MemberInfo,sizeof(MemberInfo));
// MemberInfo.cbMemberOrder=pDBOLogonSuccess->cbMemberOrder;
// MemberInfo.MemberOverDate=pDBOLogonSuccess->MemberOverDate;
// SendPacket.AddPacket(&MemberInfo,sizeof(MemberInfo),DTP_GP_MEMBER_INFO);
//}
////<2F><><EFBFBD><EFBFBD>ǩ<EFBFBD><C7A9>
//if (pDBOLogonSuccess->szUnderWrite[0]!=0)
//{
// SendPacket.AddPacket(pDBOLogonSuccess->szUnderWrite,CountStringBuffer(pDBOLogonSuccess->szUnderWrite),DTP_GP_UNDER_WRITE);
//}
//<2F><>¼<EFBFBD>ɹ<EFBFBD>
WORD wSendSize=SendPacket.GetDataSize()+sizeof(CMD_GP_LogonSuccess);
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_LOGON,SUB_GP_LOGON_SUCCESS,cbDataBuffer,wSendSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
if (m_pInitParameter->m_cbDelayList==TRUE)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
SendGameTypeInfo(dwContextID);
SendGameKindInfo(dwContextID);
SendGamePageInfo(dwContextID,INVALID_WORD);
SendGameNodeInfo(dwContextID,INVALID_WORD);
SendGameServerInfo(dwContextID,INVALID_WORD);
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_SERVER_LIST,SUB_GP_LIST_FINISH);
}
else
{
SendGameTypeInfo(dwContextID);
SendGameKindInfo(dwContextID);
SendGamePageInfo(dwContextID,0);
SendGameServerInfo(dwContextID,INVALID_WORD);
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_SERVER_LIST,SUB_GP_LIST_FINISH);
}
////<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
//SendUserSignupInfo(dwContextID,pDBOLogonSuccess->wSignupCount,pDBOLogonSuccess->SignupMatchInfo);
//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
CMD_GP_LogonFinish LogonFinish;
ZeroMemory(&LogonFinish,sizeof(LogonFinish));
LogonFinish.wIntermitTime=m_pInitParameter->m_wIntermitTime;
LogonFinish.wOnLineCountTime=m_pInitParameter->m_wOnLineCountTime;
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_LOGON,SUB_GP_LOGON_FINISH,&LogonFinish,sizeof(LogonFinish));
return true;
}
//<2F><>¼ʧ<C2BC><CAA7>
bool CAttemperEngineSink::OnDBPCLogonFailure(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_GP_LogonFailure LogonFailure;
ZeroMemory(&LogonFailure,sizeof(LogonFailure));
DBO_GP_LogonFailure * pLogonFailure=(DBO_GP_LogonFailure *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LogonFailure.lResultCode=pLogonFailure->lResultCode;
lstrcpyn(LogonFailure.szDescribeString,pLogonFailure->szDescribeString,CountArray(LogonFailure.szDescribeString));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wStringSize=CountStringBuffer(LogonFailure.szDescribeString);
WORD wSendSize=sizeof(LogonFailure)-sizeof(LogonFailure.szDescribeString)+wStringSize;
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_LOGON,SUB_GP_LOGON_FAILURE,&LogonFailure,wSendSize);
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
return true;
}
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
bool CAttemperEngineSink::OnDBPCUserIndividual(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE cbDataBuffer[SOCKET_TCP_PACKET];
DBO_GP_UserIndividual * pDBOUserIndividual=(DBO_GP_UserIndividual *)pData;
CMD_GP_UserIndividual * pCMDUserIndividual=(CMD_GP_UserIndividual *)cbDataBuffer;
CSendPacketHelper SendPacket(cbDataBuffer+sizeof(CMD_GP_UserIndividual),sizeof(cbDataBuffer)-sizeof(CMD_GP_UserIndividual));
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
ZeroMemory(pCMDUserIndividual,sizeof(CMD_GP_UserIndividual));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pCMDUserIndividual->dwUserID=pDBOUserIndividual->dwUserID;
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
if (pDBOUserIndividual->szUserNote[0]!=0)
{
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szUserNote);
SendPacket.AddPacket(pDBOUserIndividual->szUserNote,wBufferSize,DTP_GP_UI_USER_NOTE);
}
//<2F><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
if (pDBOUserIndividual->szCompellation[0]!=0)
{
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szCompellation);
SendPacket.AddPacket(pDBOUserIndividual->szCompellation,wBufferSize,DTP_GP_UI_COMPELLATION);
}
//<2F><EFBFBD><E7BBB0><EFBFBD><EFBFBD>
if (pDBOUserIndividual->szSeatPhone[0]!=0)
{
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szSeatPhone);
SendPacket.AddPacket(pDBOUserIndividual->szSeatPhone,wBufferSize,DTP_GP_UI_SEAT_PHONE);
}
//<2F>ƶ<EFBFBD><C6B6>
if (pDBOUserIndividual->szMobilePhone[0]!=0)
{
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szMobilePhone);
SendPacket.AddPacket(pDBOUserIndividual->szMobilePhone,wBufferSize,DTP_GP_UI_MOBILE_PHONE);
}
//<2F><>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
if (pDBOUserIndividual->szQQ[0]!=0)
{
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szQQ);
SendPacket.AddPacket(pDBOUserIndividual->szQQ,wBufferSize,DTP_GP_UI_QQ);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>
if (pDBOUserIndividual->szEMail[0]!=0)
{
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szEMail);
SendPacket.AddPacket(pDBOUserIndividual->szEMail,wBufferSize,DTP_GP_UI_EMAIL);
}
//<2F><>ϵ<EFBFBD><CFB5>ַ
if (pDBOUserIndividual->szDwellingPlace[0]!=0)
{
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szDwellingPlace);
SendPacket.AddPacket(pDBOUserIndividual->szDwellingPlace,wBufferSize,DTP_GP_UI_DWELLING_PLACE);
}
//ͷ<><CDB7>http
if (pDBOUserIndividual->szHeadHttp[0]!=0)
{
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szHeadHttp);
SendPacket.AddPacket(pDBOUserIndividual->szHeadHttp,wBufferSize,DTP_GP_UI_HEAD_HTTP);
}
//IP
if (pDBOUserIndividual->szLogonIP[0]!=0)
{
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szLogonIP);
SendPacket.AddPacket(pDBOUserIndividual->szLogonIP,wBufferSize,DTP_GP_UI_IP);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (pDBOUserIndividual->szUserChannel[0]!=0)
{
WORD wBufferSize=CountStringBuffer(pDBOUserIndividual->szUserChannel);
SendPacket.AddPacket(pDBOUserIndividual->szUserChannel,wBufferSize,DTP_GP_UI_CHANNEL);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
WORD wSendSize=sizeof(CMD_GP_UserIndividual)+SendPacket.GetDataSize();
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_USER_SERVICE,SUB_GP_USER_INDIVIDUAL,cbDataBuffer,wSendSize);
return true;
}
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
bool CAttemperEngineSink::OnDBPCUserAccountInfo(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBO_GP_UserAccountInfo * pDBOUserIndividual=(DBO_GP_UserAccountInfo *)pData;
CMD_GP_UserAccountInfo kCMDUserIndividual;
CopyMemory(&kCMDUserIndividual,pDBOUserIndividual,sizeof(kCMDUserIndividual));
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_USER_SERVICE,SUB_GP_QUERY_ACCOUNTINFO,&kCMDUserIndividual,sizeof(kCMDUserIndividual));
return true;
}
bool CAttemperEngineSink::OnDBPCInGameSevrerID(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
DBO_GP_UserInGameServerID * pDBInfo=(DBO_GP_UserInGameServerID *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_GP_InGameSeverID kNetInfo;
ZeroMemory(&kNetInfo,sizeof(kNetInfo));
kNetInfo.LockKindID=pDBInfo->LockKindID;
kNetInfo.LockServerID=pDBInfo->LockServerID;
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_USER_SERVICE,SUB_GP_QUERY_INGAME_SEVERID,&kNetInfo,sizeof(kNetInfo));
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
return true;
}
//΢<>ŷ<EFBFBD><C5B7><EFBFBD><EFBFBD>ɹ<EFBFBD>
bool CAttemperEngineSink::OnDBPCUserWXShareReward(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID) < m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter + LOWORD(dwContextID))->dwSocketID != dwContextID) return true;
DBO_GP_WXShareReward * pDBInfo = (DBO_GP_WXShareReward *)pData;
if (pDBInfo->cbFKCount>0)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_GP_WXShareReward mReward;
ZeroMemory(&mReward, sizeof(mReward));
mReward.cbFKCount = pDBInfo->cbFKCount;
m_pITCPNetworkEngine->SendData(dwContextID, MDM_GP_USER_SERVICE, SUB_GP_MXSHARE_REWARD, &mReward, sizeof(mReward));
}
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
bool CAttemperEngineSink::OnDBPCOperateSuccess(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_GP_OperateSuccess OperateSuccess;
ZeroMemory(&OperateSuccess,sizeof(OperateSuccess));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBO_GP_OperateSuccess * pOperateSuccess=(DBO_GP_OperateSuccess *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OperateSuccess.lResultCode=pOperateSuccess->lResultCode;
lstrcpyn(OperateSuccess.szDescribeString,pOperateSuccess->szDescribeString,CountArray(OperateSuccess.szDescribeString));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wDescribe=CountStringBuffer(OperateSuccess.szDescribeString);
WORD wHeadSize=sizeof(OperateSuccess)-sizeof(OperateSuccess.szDescribeString);
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_USER_SERVICE,SUB_GP_OPERATE_SUCCESS,&OperateSuccess,wHeadSize+wDescribe);
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
return true;
}
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
bool CAttemperEngineSink::OnDBPCOperateFailure(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_GP_OperateFailure OperateFailure;
ZeroMemory(&OperateFailure,sizeof(OperateFailure));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBO_GP_OperateFailure * pOperateFailure=(DBO_GP_OperateFailure *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OperateFailure.lResultCode=pOperateFailure->lResultCode;
lstrcpyn(OperateFailure.szDescribeString,pOperateFailure->szDescribeString,CountArray(OperateFailure.szDescribeString));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wDescribe=CountStringBuffer(OperateFailure.szDescribeString);
WORD wHeadSize=sizeof(OperateFailure)-sizeof(OperateFailure.szDescribeString);
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_USER_SERVICE,SUB_GP_OPERATE_FAILURE,&OperateFailure,wHeadSize+wDescribe);
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
return true;
}
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
bool CAttemperEngineSink::OnDBPCGameTypeItem(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize%sizeof(DBO_GP_GameType)==0);
if (wDataSize%sizeof(DBO_GP_GameType)!=0) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wItemCount=wDataSize/sizeof(DBO_GP_GameType);
DBO_GP_GameType * pGameType=(DBO_GP_GameType *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (WORD i=0;i<wItemCount;i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameType GameType;
ZeroMemory(&GameType,sizeof(GameType));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameType.wTypeID=(pGameType+i)->wTypeID;
GameType.wJoinID=(pGameType+i)->wJoinID;
GameType.wSortID=(pGameType+i)->wSortID;
lstrcpyn(GameType.szTypeName,(pGameType+i)->szTypeName,CountArray(GameType.szTypeName));
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
m_ServerListManager.InsertGameType(&GameType);
}
return true;
}
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
bool CAttemperEngineSink::OnDBPCGameKindItem(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize%sizeof(DBO_GP_GameKind)==0);
if (wDataSize%sizeof(DBO_GP_GameKind)!=0) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wItemCount=wDataSize/sizeof(DBO_GP_GameKind);
DBO_GP_GameKind * pGameKind=(DBO_GP_GameKind *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (WORD i=0;i<wItemCount;i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameKind GameKind;
ZeroMemory(&GameKind,sizeof(GameKind));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameKind.wTypeID=(pGameKind+i)->wTypeID;
GameKind.wJoinID=(pGameKind+i)->wJoinID;
GameKind.wSortID=(pGameKind+i)->wSortID;
GameKind.wKindID=(pGameKind+i)->wKindID;
GameKind.wGameID=(pGameKind+i)->wGameID;
GameKind.dwOnLineCount=m_ServerListManager.CollectOnlineInfo((pGameKind+i)->wKindID);
lstrcpyn(GameKind.szKindName,(pGameKind+i)->szKindName,CountArray(GameKind.szKindName));
lstrcpyn(GameKind.szProcessName,(pGameKind+i)->szProcessName,CountArray(GameKind.szProcessName));
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
m_ServerListManager.InsertGameKind(&GameKind);
}
return true;
}
//<2F><>Ϸ<EFBFBD>ڵ<EFBFBD>
bool CAttemperEngineSink::OnDBPCGameNodeItem(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize%sizeof(DBO_GP_GameNode)==0);
if (wDataSize%sizeof(DBO_GP_GameNode)!=0) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wItemCount=wDataSize/sizeof(DBO_GP_GameNode);
DBO_GP_GameNode * pGameNode=(DBO_GP_GameNode *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (WORD i=0;i<wItemCount;i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameNode GameNode;
ZeroMemory(&GameNode,sizeof(GameNode));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameNode.wKindID=(pGameNode+i)->wKindID;
GameNode.wJoinID=(pGameNode+i)->wJoinID;
GameNode.wSortID=(pGameNode+i)->wSortID;
GameNode.wNodeID=(pGameNode+i)->wNodeID;
lstrcpyn(GameNode.szNodeName,(pGameNode+i)->szNodeName,CountArray(GameNode.szNodeName));
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
m_ServerListManager.InsertGameNode(&GameNode);
}
return true;
}
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
bool CAttemperEngineSink::OnDBPCGamePageItem(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize%sizeof(DBO_GP_GamePage)==0);
if (wDataSize%sizeof(DBO_GP_GamePage)!=0) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wItemCount=wDataSize/sizeof(DBO_GP_GamePage);
DBO_GP_GamePage * pGamePage=(DBO_GP_GamePage *)pData;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (WORD i=0;i<wItemCount;i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGamePage GamePage;
ZeroMemory(&GamePage,sizeof(GamePage));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GamePage.wKindID=(pGamePage+i)->wKindID;
GamePage.wNodeID=(pGamePage+i)->wNodeID;
GamePage.wSortID=(pGamePage+i)->wSortID;
GamePage.wPageID=(pGamePage+i)->wPageID;
GamePage.wOperateType=(pGamePage+i)->wOperateType;
lstrcpyn(GamePage.szDisplayName,(pGamePage+i)->szDisplayName,CountArray(GamePage.szDisplayName));
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
m_ServerListManager.InsertGamePage(&GamePage);
}
return true;
}
//<2F><>Ϸ<EFBFBD>б<EFBFBD>
bool CAttemperEngineSink::OnDBPCGameListResult(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ASSERT(wDataSize==sizeof(DBO_GP_GameListResult));
if (wDataSize!=sizeof(DBO_GP_GameListResult)) return false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DBO_GP_GameListResult * pGameListResult=(DBO_GP_GameListResult *)pData;
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
if (pGameListResult->cbSuccess==TRUE)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
m_ServerListManager.CleanKernelItem();
//<2F>¼<EFBFBD>֪ͨ
CP_ControlResult ControlResult;
ControlResult.cbSuccess=ER_SUCCESS;
SendUIControlPacket(UI_LOAD_DB_LIST_RESULT,&ControlResult,sizeof(ControlResult));
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
ASSERT(m_pITimerEngine!=NULL);
m_pITimerEngine->SetTimer(IDI_LOAD_GAME_LIST,m_pInitParameter->m_wLoadListTime*1000L,1,0);
}
else
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
TCHAR szDescribe[128]=TEXT("");
_sntprintf_s(szDescribe,CountArray(szDescribe),TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>%ld <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>"),m_pInitParameter->m_wReLoadListTime);
//<2F><>ʾ<EFBFBD><CABE>Ϣ
CTraceService::TraceString(szDescribe,TraceLevel_Warning);
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
ASSERT(m_pITimerEngine!=NULL);
m_pITimerEngine->SetTimer(IDI_LOAD_GAME_LIST,m_pInitParameter->m_wReLoadListTime*1000L,1,0);
}
return true;
}
//<2F><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
bool CAttemperEngineSink::CheckPlazaVersion(BYTE cbDeviceType, DWORD dwPlazaVersion, DWORD dwSocketID, bool bCheckLowVer)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool bMustUpdate=false;
bool bAdviceUpdate=false;
DWORD dwVersion=VERSION_PLAZA;
//<2F>ֻ<EFBFBD><D6BB>
if(cbDeviceType >= DEVICE_TYPE_IPAD) dwVersion=VERSION_MOBILE_IOS;
else if(cbDeviceType >= DEVICE_TYPE_IPHONE) dwVersion=VERSION_MOBILE_IOS;
else if(cbDeviceType >= DEVICE_TYPE_ITOUCH) dwVersion=VERSION_MOBILE_IOS;
else if(cbDeviceType >= DEVICE_TYPE_ANDROID) dwVersion=VERSION_MOBILE_ANDROID;
else if(cbDeviceType == DEVICE_TYPE_PC) dwVersion=VERSION_PLAZA;
//<2F><EFBFBD>ж<EFBFBD>
if (bCheckLowVer && GetSubVer(dwPlazaVersion)<GetSubVer(dwVersion)) bAdviceUpdate=true;
if (GetMainVer(dwPlazaVersion)!=GetMainVer(dwVersion)) bMustUpdate=true;
if (GetProductVer(dwPlazaVersion)!=GetProductVer(dwVersion)) bMustUpdate=true;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
if ((bMustUpdate==true)||(bAdviceUpdate==true))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CMD_GP_UpdateNotify UpdateNotify;
ZeroMemory(&UpdateNotify,sizeof(UpdateNotify));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UpdateNotify.cbMustUpdate=bMustUpdate;
UpdateNotify.cbAdviceUpdate=bAdviceUpdate;
UpdateNotify.dwCurrentVersion=dwVersion;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_LOGON,SUB_GP_UPDATE_NOTIFY,&UpdateNotify,sizeof(UpdateNotify));
//<2F>ж<EFBFBD><D0B6>ж<EFBFBD>
if (bMustUpdate==true)
{
m_pITCPNetworkEngine->ShutDownSocket(dwSocketID);
return false;
}
}
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CAttemperEngineSink::SendUIControlPacket(WORD wRequestID, VOID * pData, WORD wDataSize)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CServiceUnits * pServiceUnits=CServiceUnits::g_pServiceUnits;
pServiceUnits->PostControlRequest(wRequestID,pData,wDataSize);
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VOID CAttemperEngineSink::SendGameTypeInfo(DWORD dwSocketID)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wSendSize=0;
BYTE cbDataBuffer[SOCKET_TCP_PACKET];
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POSITION Position=NULL;
CGameTypeItem * pGameTypeItem=NULL;
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (DWORD i=0;i<m_ServerListManager.GetGameTypeCount();i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ((wSendSize+sizeof(tagGameType))>sizeof(cbDataBuffer))
{
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_TYPE,cbDataBuffer,wSendSize);
wSendSize=0;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
pGameTypeItem=m_ServerListManager.EmunGameTypeItem(Position);
if (pGameTypeItem==NULL) break;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CopyMemory(cbDataBuffer+wSendSize,&pGameTypeItem->m_GameType,sizeof(tagGameType));
wSendSize+=sizeof(tagGameType);
}
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>
if (wSendSize>0) m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_TYPE,cbDataBuffer,wSendSize);
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VOID CAttemperEngineSink::SendGameKindInfo(DWORD dwSocketID)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wSendSize=0;
BYTE cbDataBuffer[SOCKET_TCP_PACKET];
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POSITION Position=NULL;
CGameKindItem * pGameKindItem=NULL;
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (DWORD i=0;i<m_ServerListManager.GetGameKindCount();i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ((wSendSize+sizeof(tagGameKind))>sizeof(cbDataBuffer))
{
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_KIND,cbDataBuffer,wSendSize);
wSendSize=0;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
pGameKindItem=m_ServerListManager.EmunGameKindItem(Position);
if (pGameKindItem==NULL) break;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CopyMemory(cbDataBuffer+wSendSize,&pGameKindItem->m_GameKind,sizeof(tagGameKind));
wSendSize+=sizeof(tagGameKind);
}
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>
if (wSendSize>0) m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_KIND,cbDataBuffer,wSendSize);
return;
}
//<2F><><EFBFBD>ͽڵ<CDBD>
VOID CAttemperEngineSink::SendGameNodeInfo(DWORD dwSocketID, WORD wKindID)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wSendSize=0;
BYTE cbDataBuffer[SOCKET_TCP_PACKET];
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POSITION Position=NULL;
CGameNodeItem * pGameNodeItem=NULL;
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (DWORD i=0;i<m_ServerListManager.GetGameNodeCount();i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ((wSendSize+sizeof(tagGameNode))>sizeof(cbDataBuffer))
{
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_NODE,cbDataBuffer,wSendSize);
wSendSize=0;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
pGameNodeItem=m_ServerListManager.EmunGameNodeItem(Position);
if (pGameNodeItem==NULL) break;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ((wKindID==INVALID_WORD)||(pGameNodeItem->m_GameNode.wKindID==wKindID))
{
CopyMemory(cbDataBuffer+wSendSize,&pGameNodeItem->m_GameNode,sizeof(tagGameNode));
wSendSize+=sizeof(tagGameNode);
}
}
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>
if (wSendSize>0) m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_NODE,cbDataBuffer,wSendSize);
return;
}
//<2F><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
VOID CAttemperEngineSink::SendGamePageInfo(DWORD dwSocketID, WORD wKindID)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wSendSize=0;
BYTE cbDataBuffer[SOCKET_TCP_PACKET];
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POSITION Position=NULL;
CGamePageItem * pGamePageItem=NULL;
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (DWORD i=0;i<m_ServerListManager.GetGamePageCount();i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ((wSendSize+sizeof(tagGamePage))>sizeof(cbDataBuffer))
{
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_PAGE,cbDataBuffer,wSendSize);
wSendSize=0;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
pGamePageItem=m_ServerListManager.EmunGamePageItem(Position);
if (pGamePageItem==NULL) break;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ((wKindID==INVALID_WORD)||(pGamePageItem->m_GamePage.wKindID==wKindID))
{
CopyMemory(cbDataBuffer+wSendSize,&pGamePageItem->m_GamePage,sizeof(tagGamePage));
wSendSize+=sizeof(tagGamePage);
}
}
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>
if (wSendSize>0) m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_PAGE,cbDataBuffer,wSendSize);
return;
}
//<2F><><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>
VOID CAttemperEngineSink::SendGameServerInfo(DWORD dwSocketID, WORD wKindID)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD wSendSize=0;
BYTE cbDataBuffer[SOCKET_TCP_PACKET];
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
POSITION Position=NULL;
CGameServerItem * pGameServerItem=NULL;
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (DWORD i=0;i<m_ServerListManager.GetGameServerCount();i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ((wSendSize+sizeof(tagGameServer))>sizeof(cbDataBuffer))
{
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_SERVER,cbDataBuffer,wSendSize);
wSendSize=0;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
pGameServerItem=m_ServerListManager.EmunGameServerItem(Position);
if (pGameServerItem==NULL) break;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ((wKindID==INVALID_WORD)||(pGameServerItem->m_GameServer.wKindID==wKindID))
{
CopyMemory(cbDataBuffer+wSendSize,&pGameServerItem->m_GameServer,sizeof(tagGameServer));
wSendSize+=sizeof(tagGameServer);
}
}
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>
if (wSendSize>0) m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_SERVER,cbDataBuffer,wSendSize);
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
wSendSize=0;
ZeroMemory(cbDataBuffer,sizeof(cbDataBuffer));
//ö<><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (DWORD i=0;i<m_ServerListManager.GetGameServerCount();i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ((wSendSize+sizeof(tagGameMatch))>sizeof(cbDataBuffer))
{
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_MATCH,cbDataBuffer,wSendSize);
wSendSize=0;
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
pGameServerItem=m_ServerListManager.EmunGameServerItem(Position);
if (pGameServerItem==NULL) break;
if (pGameServerItem->IsMatchServer()==false) continue;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ((wKindID==INVALID_WORD)||(pGameServerItem->m_GameServer.wKindID==wKindID))
{
CopyMemory(cbDataBuffer+wSendSize,&pGameServerItem->m_GameMatch,sizeof(tagGameMatch));
wSendSize+=sizeof(tagGameMatch);
}
}
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>
if (wSendSize>0) m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_LIST_MATCH,cbDataBuffer,wSendSize);
if(m_wAVServerPort!=0 && m_dwAVServerAddr!=0)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagAVServerOption AVServerOption;
AVServerOption.wAVServerPort=m_wAVServerPort;
AVServerOption.dwAVServerAddr=m_dwAVServerAddr;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_GP_SERVER_LIST,SUB_GP_VIDEO_OPTION,&AVServerOption,sizeof(AVServerOption));
};
return;
}
//<2F><>Ϸ<EFBFBD><CFB7>¼
bool CAttemperEngineSink::OnDBPCGameRecordList(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_USER_SERVICE,SUB_GP_GAME_RECORD_LIST,pData,wDataSize);
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
return true;
}
//<2F><>Ϸ<EFBFBD><CFB7>¼
bool CAttemperEngineSink::OnDBPCGameRecordTotal(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID)<m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter+LOWORD(dwContextID))->dwSocketID!=dwContextID) return true;
//DBO_GP_GameRecord_Video
//CMD_GP_BackGameRecord_Video
m_pITCPNetworkEngine->SendData(dwContextID,MDM_GP_USER_SERVICE,SUB_GP_GAME_RECORD_TOTAL,pData,wDataSize);
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
return true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD>
bool CAttemperEngineSink::OnDBPCGameRecordChild(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID) < m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter + LOWORD(dwContextID))->dwSocketID != dwContextID) return true;
m_pITCPNetworkEngine->SendData(dwContextID, MDM_GP_USER_SERVICE, SUB_GP_GAME_RECORD_CHILD, pData, wDataSize);
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
return true;
}
bool CAttemperEngineSink::OnDBPCQueryInMatch(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID) < m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter + LOWORD(dwContextID))->dwSocketID != dwContextID) return true;
m_pITCPNetworkEngine->SendData(dwContextID, MDM_GP_USER_SERVICE, SUB_GP_QUERY_IN_MATCH, pData, wDataSize);
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
return true;
}
bool CAttemperEngineSink::OnDBPCQueryInUnion(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID) < m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter + LOWORD(dwContextID))->dwSocketID != dwContextID) return true;
m_pITCPNetworkEngine->SendData(dwContextID, MDM_GP_USER_SERVICE, SUB_GP_QUERY_IN_UNION, pData, wDataSize);
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
return true;
}
bool CAttemperEngineSink::OnDBPCUnionList(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID) < m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter + LOWORD(dwContextID))->dwSocketID != dwContextID) return true;
m_pITCPNetworkEngine->SendData(dwContextID, MDM_GP_USER_SERVICE, SUB_GP_GET_UNION_LIST, pData, wDataSize);
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
return true;
}
bool CAttemperEngineSink::OnDBPCUnionGameList(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID) < m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter + LOWORD(dwContextID))->dwSocketID != dwContextID) return true;
m_pITCPNetworkEngine->SendData(dwContextID, MDM_GP_USER_SERVICE, SUB_GP_UNION_GAME_LIST, pData, wDataSize);
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
return true;
}
//<2F><><EFBFBD>᷿<EFBFBD><E1B7BF><EFBFBD>б<EFBFBD>;
bool CAttemperEngineSink::OnDBPCUnionRoomList(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID) < m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter + LOWORD(dwContextID))->dwSocketID != dwContextID) return true;
m_pITCPNetworkEngine->SendData(dwContextID, MDM_GP_USER_SERVICE, SUB_GP_GET_UNION_ROOM_LIST, pData, wDataSize);
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
return true;
}
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>;
bool CAttemperEngineSink::OnDBPCAutoRoomList(DWORD dwContextID, VOID * pData, WORD wDataSize)
{
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
ASSERT(LOWORD(dwContextID) < m_pInitParameter->m_wMaxConnect);
if ((m_pBindParameter + LOWORD(dwContextID))->dwSocketID != dwContextID) return true;
m_pITCPNetworkEngine->SendData(dwContextID, MDM_GP_USER_SERVICE, SUB_GP_GET_AUTO_ROOM_LIST, pData, wDataSize);
m_pITCPNetworkEngine->ShutDownSocket(dwContextID);
return true;
}
//////////////////////////////////////////////////////////////////////////////////