970 lines
28 KiB
C++
970 lines
28 KiB
C++
|
|
#include "StdAfx.h"
|
|||
|
|
#include "ServiceUnits.h"
|
|||
|
|
#include "ControlPacket.h"
|
|||
|
|
#include "AttemperEngineSink.h"
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>캯<EFBFBD><ECBAAF>
|
|||
|
|
CAttemperEngineSink::CAttemperEngineSink()
|
|||
|
|
{
|
|||
|
|
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
m_wCollectItem=INVALID_WORD;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|||
|
|
m_pInitParameter=NULL;
|
|||
|
|
m_pBindParameter=NULL;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
m_pITimerEngine=NULL;
|
|||
|
|
m_pITCPNetworkEngine=NULL;
|
|||
|
|
|
|||
|
|
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);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//ֹͣ<CDA3>¼<EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::OnAttemperEngineConclude(IUnknownEx * pIUnknownEx)
|
|||
|
|
{
|
|||
|
|
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
m_wCollectItem=INVALID_WORD;
|
|||
|
|
m_WaitCollectItemArray.RemoveAll();
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|||
|
|
m_pITimerEngine=NULL;
|
|||
|
|
m_pITCPNetworkEngine=NULL;
|
|||
|
|
|
|||
|
|
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
SafeDeleteArray(m_pBindParameter);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
m_GlobalInfoManager.ResetData();
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::OnEventControl(WORD wIdentifier, VOID * pData, WORD wDataSize)
|
|||
|
|
{
|
|||
|
|
switch (wIdentifier)
|
|||
|
|
{
|
|||
|
|
case CT_MAINTAIN_SERVICE:
|
|||
|
|
{
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(wDataSize == sizeof(BYTE));
|
|||
|
|
if (wDataSize != sizeof(BYTE)) return false;
|
|||
|
|
BYTE cbFlag = *(BYTE*)pData;
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
case CT_SEND_SYSTEM_MESSAGE:
|
|||
|
|
{
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(wDataSize == sizeof(CMD_CM_SystemMessage));
|
|||
|
|
if (wDataSize != sizeof(CMD_CM_SystemMessage)) return false;
|
|||
|
|
|
|||
|
|
CMD_CM_SystemMessage* pMessage = (CMD_CM_SystemMessage*)pData;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>֪ͨ
|
|||
|
|
m_pITCPNetworkEngine->SendDataBatch(MDM_CS_MANAGER_SERVICE, SUB_CS_S_GAME_MESSAGE, pData, wDataSize, 0L);
|
|||
|
|
|
|||
|
|
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)
|
|||
|
|
{
|
|||
|
|
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>¼<EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::OnEventTCPNetworkRead(TCP_Command Command, VOID * pData, WORD wDataSize, DWORD dwSocketID)
|
|||
|
|
{
|
|||
|
|
switch (Command.wMainCmdID)
|
|||
|
|
{
|
|||
|
|
case MDM_CS_REGISTER: //<2F><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>
|
|||
|
|
{
|
|||
|
|
return OnTCPNetworkMainRegister(Command.wSubCmdID,pData,wDataSize,dwSocketID);
|
|||
|
|
}
|
|||
|
|
case MDM_CS_SERVICE_INFO: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
{
|
|||
|
|
return OnTCPNetworkMainServiceInfo(Command.wSubCmdID,pData,wDataSize,dwSocketID);
|
|||
|
|
}
|
|||
|
|
case MDM_CS_USER_COLLECT: //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
return OnTCPNetworkMainUserCollect(Command.wSubCmdID,pData,wDataSize,dwSocketID);
|
|||
|
|
}
|
|||
|
|
case MDM_CS_REMOTE_SERVICE: //Զ<>̷<EFBFBD><CCB7><EFBFBD>
|
|||
|
|
{
|
|||
|
|
return OnTCPNetworkMainRemoteService(Command.wSubCmdID,pData,wDataSize,dwSocketID);
|
|||
|
|
}
|
|||
|
|
case MDM_CS_MANAGER_SERVICE: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
return OnTCPNetworkMainManagerService(Command.wSubCmdID,pData,wDataSize,dwSocketID);
|
|||
|
|
}
|
|||
|
|
case MDM_CS_WEB_SERVICE: //<2F><>վ<EFBFBD><D5BE><EFBFBD>ط<EFBFBD><D8B7><EFBFBD>
|
|||
|
|
{
|
|||
|
|
return OnTCPNetworkMainWebService(Command.wSubCmdID, pData, wDataSize, dwSocketID);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F>ر<EFBFBD><D8B1>¼<EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::OnEventTCPNetworkShut(DWORD dwClientAddr, DWORD dwActiveTime, DWORD dwSocketID)
|
|||
|
|
{
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1>Ϣ
|
|||
|
|
WORD wBindIndex=LOWORD(dwSocketID);
|
|||
|
|
tagBindParameter * pBindParameter=(m_pBindParameter+wBindIndex);
|
|||
|
|
|
|||
|
|
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
|||
|
|
if (pBindParameter->ServiceKind==ServiceKind_Game)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
WORD wBindIndex=LOWORD(dwSocketID);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
|
|||
|
|
if (wBindIndex==m_wCollectItem)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|||
|
|
m_wCollectItem=INVALID_WORD;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
|
|||
|
|
if (m_WaitCollectItemArray.GetCount()>0)
|
|||
|
|
{
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
INT_PTR nWaitCount=m_WaitCollectItemArray.GetCount();
|
|||
|
|
m_wCollectItem=m_WaitCollectItemArray[nWaitCount-1];
|
|||
|
|
|
|||
|
|
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
m_WaitCollectItemArray.RemoveAt(nWaitCount-1);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
DWORD dwSocketID=(m_pBindParameter+m_wCollectItem)->dwSocketID;
|
|||
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_CS_USER_COLLECT,SUB_CS_S_COLLECT_REQUEST);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
//ɾ<><C9BE><EFBFBD>ȴ<EFBFBD>
|
|||
|
|
for (INT_PTR i=0;i<m_WaitCollectItemArray.GetCount();i++)
|
|||
|
|
{
|
|||
|
|
if (wBindIndex==m_WaitCollectItemArray[i])
|
|||
|
|
{
|
|||
|
|
m_WaitCollectItemArray.RemoveAt(i);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CMD_CS_S_ServerRemove ServerRemove;
|
|||
|
|
ZeroMemory(&ServerRemove,sizeof(ServerRemove));
|
|||
|
|
|
|||
|
|
//ɾ<><C9BE>֪ͨ
|
|||
|
|
ServerRemove.wServerID=pBindParameter->wServiceID;
|
|||
|
|
m_pITCPNetworkEngine->SendDataBatch(MDM_CS_SERVICE_INFO,SUB_CS_S_SERVER_REMOVE,&ServerRemove,sizeof(ServerRemove),0L);
|
|||
|
|
|
|||
|
|
//ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
m_GlobalInfoManager.DeleteServerItem(pBindParameter->wServiceID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F>㳡<EFBFBD><E3B3A1><EFBFBD><EFBFBD>
|
|||
|
|
if (pBindParameter->ServiceKind==ServiceKind_Plaza)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
WORD wBindIndex=LOWORD(dwSocketID);
|
|||
|
|
tagBindParameter * pBindParameter=(m_pBindParameter+wBindIndex);
|
|||
|
|
|
|||
|
|
//ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
m_GlobalInfoManager.DeletePlazaItem(pBindParameter->wServiceID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
ZeroMemory(pBindParameter,sizeof(tagBindParameter));
|
|||
|
|
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ݿ<EFBFBD><DDBF>¼<EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::OnEventDataBase(WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize)
|
|||
|
|
{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F>ر<EFBFBD><D8B1>¼<EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::OnEventTCPSocketShut(WORD wServiceID, BYTE cbShutReason)
|
|||
|
|
{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::OnEventTCPSocketLink(WORD wServiceID, INT nErrorCode)
|
|||
|
|
{
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD>¼<EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::OnEventTCPSocketRead(WORD wServiceID, TCP_Command Command, VOID * pData, WORD wDataSize)
|
|||
|
|
{
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::OnTCPNetworkMainRegister(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID)
|
|||
|
|
{
|
|||
|
|
switch (wSubCmdID)
|
|||
|
|
{
|
|||
|
|
case SUB_CS_C_REGISTER_PLAZA: //ע<><D7A2><EFBFBD>㳡
|
|||
|
|
{
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(wDataSize==sizeof(CMD_CS_C_RegisterPlaza));
|
|||
|
|
if (wDataSize!=sizeof(CMD_CS_C_RegisterPlaza)) return false;
|
|||
|
|
|
|||
|
|
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|||
|
|
CMD_CS_C_RegisterPlaza * pRegisterPlaza=(CMD_CS_C_RegisterPlaza *)pData;
|
|||
|
|
|
|||
|
|
//<2F><>Ч<EFBFBD>ж<EFBFBD>
|
|||
|
|
if ((pRegisterPlaza->szServerName[0]==0)||(pRegisterPlaza->szServerAddr[0]==0))
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CMD_CS_S_RegisterFailure RegisterFailure;
|
|||
|
|
ZeroMemory(&RegisterFailure,sizeof(RegisterFailure));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|||
|
|
RegisterFailure.lErrorCode=0L;
|
|||
|
|
lstrcpyn(RegisterFailure.szDescribeString,TEXT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>롰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD>"),CountArray(RegisterFailure.szDescribeString));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
WORD wStringSize=CountStringBuffer(RegisterFailure.szDescribeString);
|
|||
|
|
WORD wSendSize=sizeof(RegisterFailure)-sizeof(RegisterFailure.szDescribeString)+wStringSize;
|
|||
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_CS_REGISTER,SUB_CS_S_REGISTER_FAILURE,&RegisterFailure,wSendSize);
|
|||
|
|
|
|||
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwSocketID);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ð<EFBFBD><C3B0><EFBFBD>
|
|||
|
|
WORD wBindIndex=LOWORD(dwSocketID);
|
|||
|
|
(m_pBindParameter+wBindIndex)->wServiceID=wBindIndex;
|
|||
|
|
(m_pBindParameter+wBindIndex)->ServiceKind=ServiceKind_Plaza;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
tagGamePlaza GamePlaza;
|
|||
|
|
ZeroMemory(&GamePlaza,sizeof(GamePlaza));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GamePlaza.wPlazaID=wBindIndex;
|
|||
|
|
lstrcpyn(GamePlaza.szServerName,pRegisterPlaza->szServerName,CountArray(GamePlaza.szServerName));
|
|||
|
|
lstrcpyn(GamePlaza.szServerAddr,pRegisterPlaza->szServerAddr,CountArray(GamePlaza.szServerAddr));
|
|||
|
|
|
|||
|
|
//ע<>᷿<EFBFBD><E1B7BF>
|
|||
|
|
m_GlobalInfoManager.ActivePlazaItem(wBindIndex,GamePlaza);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
|
SendServerListItem(dwSocketID);
|
|||
|
|
SendMatchListItem(dwSocketID);
|
|||
|
|
|
|||
|
|
//Ⱥ<><C8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
m_pITCPNetworkEngine->AllowBatchSend(dwSocketID,true,0L);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
case SUB_CS_C_REGISTER_SERVER: //ע<>᷿<EFBFBD><E1B7BF>
|
|||
|
|
{
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(wDataSize==sizeof(CMD_CS_C_RegisterServer));
|
|||
|
|
if (wDataSize!=sizeof(CMD_CS_C_RegisterServer)) return false;
|
|||
|
|
|
|||
|
|
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|||
|
|
CMD_CS_C_RegisterServer * pRegisterServer=(CMD_CS_C_RegisterServer *)pData;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>
|
|||
|
|
if (m_GlobalInfoManager.SearchServerItem(pRegisterServer->wServerID)!=NULL)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CMD_CS_S_RegisterFailure RegisterFailure;
|
|||
|
|
ZeroMemory(&RegisterFailure,sizeof(RegisterFailure));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|||
|
|
RegisterFailure.lErrorCode=0L;
|
|||
|
|
lstrcpyn(RegisterFailure.szDescribeString,TEXT("<EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>"),CountArray(RegisterFailure.szDescribeString));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
WORD wStringSize=CountStringBuffer(RegisterFailure.szDescribeString);
|
|||
|
|
WORD wSendSize=sizeof(RegisterFailure)-sizeof(RegisterFailure.szDescribeString)+wStringSize;
|
|||
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_CS_REGISTER,SUB_CS_S_REGISTER_FAILURE,&RegisterFailure,wSendSize);
|
|||
|
|
|
|||
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
m_pITCPNetworkEngine->ShutDownSocket(dwSocketID);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ð<EFBFBD><C3B0><EFBFBD>
|
|||
|
|
WORD wBindIndex=LOWORD(dwSocketID);
|
|||
|
|
(m_pBindParameter+wBindIndex)->ServiceKind=ServiceKind_Game;
|
|||
|
|
(m_pBindParameter+wBindIndex)->wServiceID=pRegisterServer->wServerID;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
tagGameServer GameServer;
|
|||
|
|
ZeroMemory(&GameServer,sizeof(GameServer));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GameServer.wKindID=pRegisterServer->wKindID;
|
|||
|
|
GameServer.wNodeID=pRegisterServer->wNodeID;
|
|||
|
|
GameServer.wSortID=pRegisterServer->wSortID;
|
|||
|
|
GameServer.wServerID=pRegisterServer->wServerID;
|
|||
|
|
//GameServer.wServerKind=pRegisterServer->wServerKind;
|
|||
|
|
GameServer.wServerType=pRegisterServer->wServerType;
|
|||
|
|
GameServer.wServerPort=pRegisterServer->wServerPort;
|
|||
|
|
GameServer.lCellScore=pRegisterServer->lCellScore;
|
|||
|
|
GameServer.lEnterScore=pRegisterServer->lEnterScore;
|
|||
|
|
GameServer.dwServerRule=pRegisterServer->dwServerRule;
|
|||
|
|
GameServer.dwOnLineCount=pRegisterServer->dwOnLineCount;
|
|||
|
|
GameServer.dwFullCount=pRegisterServer->dwFullCount;
|
|||
|
|
lstrcpyn(GameServer.szServerName,pRegisterServer->szServerName,CountArray(GameServer.szServerName));
|
|||
|
|
lstrcpyn(GameServer.szServerAddr,pRegisterServer->szServerAddr,CountArray(GameServer.szServerAddr));
|
|||
|
|
|
|||
|
|
//ע<>᷿<EFBFBD><E1B7BF>
|
|||
|
|
m_GlobalInfoManager.ActiveServerItem(wBindIndex,GameServer);
|
|||
|
|
|
|||
|
|
//Ⱥ<><C8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
m_pITCPNetworkEngine->SendDataBatch(MDM_CS_SERVICE_INFO,SUB_CS_S_SERVER_INSERT,&GameServer,sizeof(GameServer),0L);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
|
SendServerListItem(dwSocketID);
|
|||
|
|
SendMatchListItem(dwSocketID);
|
|||
|
|
|
|||
|
|
//Ⱥ<><C8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
m_pITCPNetworkEngine->AllowBatchSend(dwSocketID,true,0L);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>֪ͨ
|
|||
|
|
if (m_wCollectItem==INVALID_WORD)
|
|||
|
|
{
|
|||
|
|
m_wCollectItem=wBindIndex;
|
|||
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_CS_USER_COLLECT,SUB_CS_S_COLLECT_REQUEST);
|
|||
|
|
}
|
|||
|
|
else m_WaitCollectItemArray.Add(wBindIndex);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
case SUB_CS_C_REGISTER_MATCH: //ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(wDataSize==sizeof(CMD_CS_C_RegisterMatch));
|
|||
|
|
if (wDataSize!=sizeof(CMD_CS_C_RegisterMatch)) return false;
|
|||
|
|
|
|||
|
|
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|||
|
|
CMD_CS_C_RegisterMatch * pRegisterMatch=(CMD_CS_C_RegisterMatch *)pData;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>
|
|||
|
|
CGlobalServerItem * pGlobalServerItem = m_GlobalInfoManager.SearchServerItem(pRegisterMatch->wServerID);
|
|||
|
|
if(pGlobalServerItem==NULL) return true;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
tagGameMatch GameMatch;
|
|||
|
|
ZeroMemory(&GameMatch,sizeof(GameMatch));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GameMatch.wServerID = pRegisterMatch->wServerID;
|
|||
|
|
GameMatch.dwMatchID = pRegisterMatch->dwMatchID;
|
|||
|
|
GameMatch.dwMatchNO = pRegisterMatch->dwMatchNO;
|
|||
|
|
GameMatch.lMatchEnterScore = pRegisterMatch->lMatchEnterScore;
|
|||
|
|
GameMatch.cbMatchType = pRegisterMatch->cbMatchType;
|
|||
|
|
GameMatch.lMatchFee = pRegisterMatch->lMatchFee;
|
|||
|
|
GameMatch.cbMatchFeeType = pRegisterMatch->cbMatchFeeType;
|
|||
|
|
GameMatch.cbMemberOrder = pRegisterMatch->cbMemberOrder;
|
|||
|
|
GameMatch.wRewardCount = pRegisterMatch->wRewardCount;
|
|||
|
|
GameMatch.MatchEndTime = pRegisterMatch->MatchEndTime;
|
|||
|
|
GameMatch.MatchStartTime = pRegisterMatch->MatchStartTime;
|
|||
|
|
GameMatch.wStartUserCount = pRegisterMatch->wStartUserCount;
|
|||
|
|
GameMatch.wMatchPlayCount = pRegisterMatch->wMatchPlayCount;
|
|||
|
|
GameMatch.SignupStartTime = pRegisterMatch->SignupStartTime;
|
|||
|
|
GameMatch.SignupEndTime = pRegisterMatch->SignupEndTime;
|
|||
|
|
GameMatch.dwQuality = pRegisterMatch->dwQuality;
|
|||
|
|
GameMatch.dwCycle = pRegisterMatch->dwCycle;
|
|||
|
|
GameMatch.dwInviteCode = pRegisterMatch->dwInviteCode;
|
|||
|
|
GameMatch.dwChannelID = pRegisterMatch->dwChannelID;
|
|||
|
|
lstrcpyn(GameMatch.szMatchName,pRegisterMatch->szMatchName,CountArray(GameMatch.szMatchName));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CopyMemory(&pGlobalServerItem->m_GameMatch,&GameMatch,sizeof(pGlobalServerItem->m_GameMatch));
|
|||
|
|
|
|||
|
|
//Ⱥ<><C8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
m_pITCPNetworkEngine->SendDataBatch(MDM_CS_SERVICE_INFO,SUB_CS_S_MATCH_INSERT,&GameMatch,sizeof(GameMatch),0L);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
case SUB_CS_C_REGISTER_WEBGATE:
|
|||
|
|
{
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(wDataSize == sizeof(CMD_CS_C_RegisterWebGate));
|
|||
|
|
if (wDataSize != sizeof(CMD_CS_C_RegisterWebGate)) return false;
|
|||
|
|
|
|||
|
|
CMD_CS_C_RegisterWebGate* pWebGate = (CMD_CS_C_RegisterWebGate*)pData;
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>״̬
|
|||
|
|
bool CAttemperEngineSink::OnTCPNetworkMainServiceInfo(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID)
|
|||
|
|
{
|
|||
|
|
switch (wSubCmdID)
|
|||
|
|
{
|
|||
|
|
case SUB_CS_C_SERVER_ONLINE: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(wDataSize==sizeof(CMD_CS_C_ServerOnLine));
|
|||
|
|
if (wDataSize!=sizeof(CMD_CS_C_ServerOnLine)) return false;
|
|||
|
|
|
|||
|
|
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|||
|
|
CMD_CS_C_ServerOnLine * pServerOnLine=(CMD_CS_C_ServerOnLine *)pData;
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
WORD wBindIndex=LOWORD(dwSocketID);
|
|||
|
|
tagBindParameter * pBindParameter=(m_pBindParameter+wBindIndex);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
|
|||
|
|
ASSERT(pBindParameter->ServiceKind==ServiceKind_Game);
|
|||
|
|
if (pBindParameter->ServiceKind!=ServiceKind_Game) return false;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>
|
|||
|
|
WORD wServerID=pBindParameter->wServiceID;
|
|||
|
|
CGlobalServerItem * pGlobalServerItem=m_GlobalInfoManager.SearchServerItem(wServerID);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (pGlobalServerItem!=NULL)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CMD_CS_S_ServerOnLine ServerOnLine;
|
|||
|
|
ZeroMemory(&ServerOnLine,sizeof(ServerOnLine));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|||
|
|
pGlobalServerItem->m_GameServer.dwOnLineCount=pServerOnLine->dwOnLineCount;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|||
|
|
ServerOnLine.wServerID=wServerID;
|
|||
|
|
ServerOnLine.dwOnLineCount=pServerOnLine->dwOnLineCount;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>֪ͨ
|
|||
|
|
m_pITCPNetworkEngine->SendDataBatch(MDM_CS_SERVICE_INFO,SUB_CS_S_SERVER_ONLINE,&ServerOnLine,sizeof(ServerOnLine),0L);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
case SUB_CS_C_SERVER_MODIFY: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(wDataSize==sizeof(CMD_CS_C_ServerModify));
|
|||
|
|
if (wDataSize!=sizeof(CMD_CS_C_ServerModify)) return false;
|
|||
|
|
|
|||
|
|
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|||
|
|
CMD_CS_C_ServerModify * pServerModify=(CMD_CS_C_ServerModify *)pData;
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
WORD wBindIndex=LOWORD(dwSocketID);
|
|||
|
|
tagBindParameter * pBindParameter=(m_pBindParameter+wBindIndex);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
|
|||
|
|
ASSERT(pBindParameter->ServiceKind==ServiceKind_Game);
|
|||
|
|
if (pBindParameter->ServiceKind!=ServiceKind_Game) return false;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>
|
|||
|
|
ASSERT(m_GlobalInfoManager.SearchServerItem(pBindParameter->wServiceID)!=NULL);
|
|||
|
|
CGlobalServerItem * pGlobalServerItem=m_GlobalInfoManager.SearchServerItem(pBindParameter->wServiceID);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (pGlobalServerItem!=NULL)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|||
|
|
pGlobalServerItem->m_GameServer.wSortID=pServerModify->wSortID;
|
|||
|
|
pGlobalServerItem->m_GameServer.wKindID=pServerModify->wKindID;
|
|||
|
|
pGlobalServerItem->m_GameServer.wNodeID=pServerModify->wNodeID;
|
|||
|
|
pGlobalServerItem->m_GameServer.wServerPort=pServerModify->wServerPort;
|
|||
|
|
pGlobalServerItem->m_GameServer.dwOnLineCount=pServerModify->dwOnLineCount;
|
|||
|
|
pGlobalServerItem->m_GameServer.dwFullCount=pServerModify->dwFullCount;
|
|||
|
|
lstrcpyn(pGlobalServerItem->m_GameServer.szServerName,pServerModify->szServerName,CountArray(pGlobalServerItem->m_GameServer.szServerName));
|
|||
|
|
lstrcpyn(pGlobalServerItem->m_GameServer.szServerAddr,pServerModify->szServerAddr,CountArray(pGlobalServerItem->m_GameServer.szServerAddr));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CMD_CS_S_ServerModify ServerModify;
|
|||
|
|
ZeroMemory(&ServerModify,sizeof(ServerModify));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|||
|
|
ServerModify.wKindID=pServerModify->wKindID;
|
|||
|
|
ServerModify.wSortID=pServerModify->wSortID;
|
|||
|
|
ServerModify.wNodeID=pServerModify->wNodeID;
|
|||
|
|
ServerModify.wServerID=pBindParameter->wServiceID;
|
|||
|
|
ServerModify.wServerPort=pServerModify->wServerPort;
|
|||
|
|
ServerModify.dwOnLineCount=pServerModify->dwOnLineCount;
|
|||
|
|
ServerModify.dwFullCount=pServerModify->dwFullCount;
|
|||
|
|
lstrcpyn(ServerModify.szServerAddr,pServerModify->szServerAddr,CountArray(ServerModify.szServerAddr));
|
|||
|
|
lstrcpyn(ServerModify.szServerName,pServerModify->szServerName,CountArray(ServerModify.szServerName));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>֪ͨ
|
|||
|
|
m_pITCPNetworkEngine->SendDataBatch(MDM_CS_SERVICE_INFO,SUB_CS_S_SERVER_MODIFY,&ServerModify,sizeof(ServerModify),0L);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::OnTCPNetworkMainUserCollect(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID)
|
|||
|
|
{
|
|||
|
|
switch (wSubCmdID)
|
|||
|
|
{
|
|||
|
|
case SUB_CS_C_USER_ENTER: //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(wDataSize==sizeof(CMD_CS_C_UserEnter));
|
|||
|
|
if (wDataSize!=sizeof(CMD_CS_C_UserEnter)) return false;
|
|||
|
|
|
|||
|
|
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|||
|
|
CMD_CS_C_UserEnter * pUserEnter=(CMD_CS_C_UserEnter *)pData;
|
|||
|
|
pUserEnter->szNickName[CountArray(pUserEnter->szNickName)-1]=0;
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
WORD wBindIndex=LOWORD(dwSocketID);
|
|||
|
|
tagBindParameter * pBindParameter=(m_pBindParameter+wBindIndex);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
|
|||
|
|
ASSERT(pBindParameter->ServiceKind==ServiceKind_Game);
|
|||
|
|
if (pBindParameter->ServiceKind!=ServiceKind_Game) return false;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
tagGlobalUserInfo GlobalUserInfo;
|
|||
|
|
ZeroMemory(&GlobalUserInfo,sizeof(GlobalUserInfo));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|||
|
|
GlobalUserInfo.dwUserID=pUserEnter->dwUserID;
|
|||
|
|
GlobalUserInfo.dwGameID=pUserEnter->dwGameID;
|
|||
|
|
lstrcpyn(GlobalUserInfo.szNickName,pUserEnter->szNickName,CountArray(GlobalUserInfo.szNickName));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
GlobalUserInfo.cbGender=pUserEnter->cbGender;
|
|||
|
|
GlobalUserInfo.cbMemberOrder=pUserEnter->cbMemberOrder;
|
|||
|
|
GlobalUserInfo.cbMasterOrder=pUserEnter->cbMasterOrder;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
|
|||
|
|
m_GlobalInfoManager.ActiveUserItem(GlobalUserInfo,pBindParameter->wServiceID);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
case SUB_CS_C_USER_LEAVE: //<2F>û<EFBFBD><C3BB>뿪
|
|||
|
|
{
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(wDataSize==sizeof(CMD_CS_C_UserLeave));
|
|||
|
|
if (wDataSize!=sizeof(CMD_CS_C_UserLeave)) return false;
|
|||
|
|
|
|||
|
|
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|||
|
|
CMD_CS_C_UserLeave * pUserLeave=(CMD_CS_C_UserLeave *)pData;
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
WORD wBindIndex=LOWORD(dwSocketID);
|
|||
|
|
tagBindParameter * pBindParameter=(m_pBindParameter+wBindIndex);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
|
|||
|
|
ASSERT(pBindParameter->ServiceKind==ServiceKind_Game);
|
|||
|
|
if (pBindParameter->ServiceKind!=ServiceKind_Game) return false;
|
|||
|
|
|
|||
|
|
//ɾ<><C9BE><EFBFBD>û<EFBFBD>
|
|||
|
|
m_GlobalInfoManager.DeleteUserItem(pUserLeave->dwUserID,pBindParameter->wServiceID);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
case SUB_CS_C_USER_FINISH: //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
WORD wBindIndex=LOWORD(dwSocketID);
|
|||
|
|
tagBindParameter * pBindParameter=(m_pBindParameter+wBindIndex);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
|
|||
|
|
ASSERT((m_wCollectItem==wBindIndex)&&(pBindParameter->ServiceKind==ServiceKind_Game));
|
|||
|
|
if ((m_wCollectItem!=wBindIndex)||(pBindParameter->ServiceKind!=ServiceKind_Game)) return false;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|||
|
|
m_wCollectItem=INVALID_WORD;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
|
|||
|
|
if (m_WaitCollectItemArray.GetCount()>0)
|
|||
|
|
{
|
|||
|
|
//<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
INT_PTR nWaitCount=m_WaitCollectItemArray.GetCount();
|
|||
|
|
m_wCollectItem=m_WaitCollectItemArray[nWaitCount-1];
|
|||
|
|
|
|||
|
|
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
m_WaitCollectItemArray.RemoveAt(nWaitCount-1);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
DWORD dwSocketID=(m_pBindParameter+m_wCollectItem)->dwSocketID;
|
|||
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_CS_USER_COLLECT,SUB_CS_S_COLLECT_REQUEST);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//Զ<>̷<EFBFBD><CCB7><EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::OnTCPNetworkMainRemoteService(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID)
|
|||
|
|
{
|
|||
|
|
switch (wSubCmdID)
|
|||
|
|
{
|
|||
|
|
case SUB_CS_C_SEARCH_CORRESPOND: //Э<><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(wDataSize==sizeof(CMD_CS_C_SearchCorrespond));
|
|||
|
|
if (wDataSize!=sizeof(CMD_CS_C_SearchCorrespond)) return false;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
CMD_CS_C_SearchCorrespond * pSearchCorrespond=(CMD_CS_C_SearchCorrespond *)pData;
|
|||
|
|
pSearchCorrespond->szNickName[CountArray(pSearchCorrespond->szNickName)-1]=0;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
CMD_CS_S_SearchCorrespond SearchCorrespond;
|
|||
|
|
ZeroMemory(&SearchCorrespond,sizeof(SearchCorrespond));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
|
|||
|
|
CGlobalUserItem * ResultUserItem[2];
|
|||
|
|
ZeroMemory(ResultUserItem,sizeof(ResultUserItem));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|||
|
|
SearchCorrespond.dwSocketID=pSearchCorrespond->dwSocketID;
|
|||
|
|
SearchCorrespond.dwClientAddr=pSearchCorrespond->dwClientAddr;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
|
|||
|
|
if (pSearchCorrespond->dwGameID!=0L)
|
|||
|
|
{
|
|||
|
|
ResultUserItem[0]=m_GlobalInfoManager.SearchUserItemByGameID(pSearchCorrespond->dwGameID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
|
|||
|
|
if (pSearchCorrespond->szNickName[0]!=0)
|
|||
|
|
{
|
|||
|
|
_tcslwr(pSearchCorrespond->szNickName);
|
|||
|
|
ResultUserItem[1]=m_GlobalInfoManager.SearchUserItemByNickName(pSearchCorrespond->szNickName);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>
|
|||
|
|
for (BYTE i=0;i<CountArray(ResultUserItem);i++)
|
|||
|
|
{
|
|||
|
|
if (ResultUserItem[i]!=NULL)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
WORD wServerIndex=0;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>
|
|||
|
|
do
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>
|
|||
|
|
CGlobalServerItem * pGlobalServerItem=ResultUserItem[i]->EnumServerItem(wServerIndex++);
|
|||
|
|
|
|||
|
|
//<2F><>ֹ<EFBFBD>ж<EFBFBD>
|
|||
|
|
if (pGlobalServerItem==NULL) break;
|
|||
|
|
if (SearchCorrespond.wUserCount>=CountArray(SearchCorrespond.UserRemoteInfo)) break;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
WORD wIndex=SearchCorrespond.wUserCount++;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
SearchCorrespond.UserRemoteInfo[wIndex].cbGender=ResultUserItem[i]->GetGender();
|
|||
|
|
SearchCorrespond.UserRemoteInfo[wIndex].cbMemberOrder=ResultUserItem[i]->GetMemberOrder();
|
|||
|
|
SearchCorrespond.UserRemoteInfo[wIndex].cbMasterOrder=ResultUserItem[i]->GetMasterOrder();
|
|||
|
|
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
|
|||
|
|
SearchCorrespond.UserRemoteInfo[wIndex].dwUserID=ResultUserItem[i]->GetUserID();
|
|||
|
|
SearchCorrespond.UserRemoteInfo[wIndex].dwGameID=ResultUserItem[i]->GetGameID();
|
|||
|
|
lstrcpyn(SearchCorrespond.UserRemoteInfo[wIndex].szNickName,ResultUserItem[i]->GetNickName(),LEN_NICKNAME);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
SearchCorrespond.UserRemoteInfo[wIndex].wKindID=pGlobalServerItem->GetKindID();
|
|||
|
|
SearchCorrespond.UserRemoteInfo[wIndex].wServerID=pGlobalServerItem->GetServerID();
|
|||
|
|
lstrcpyn(SearchCorrespond.UserRemoteInfo[wIndex].szGameServer,pGlobalServerItem->m_GameServer.szServerName,LEN_SERVER);
|
|||
|
|
|
|||
|
|
} while (true);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<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(dwSocketID,MDM_CS_REMOTE_SERVICE,SUB_CS_S_SEARCH_CORRESPOND,&SearchCorrespond,wHeadSize+wItemSize);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::OnTCPNetworkMainManagerService(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID)
|
|||
|
|
{
|
|||
|
|
switch (wSubCmdID)
|
|||
|
|
{
|
|||
|
|
case SUB_CS_C_SYSTEM_MESSAGE: //ϵͳ<CFB5><CDB3>Ϣ
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>֪ͨ
|
|||
|
|
m_pITCPNetworkEngine->SendDataBatch(MDM_CS_MANAGER_SERVICE,SUB_CS_S_SYSTEM_MESSAGE,pData,wDataSize,0L);
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
case SUB_CS_C_PROPERTY_TRUMPET: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>֪ͨ
|
|||
|
|
m_pITCPNetworkEngine->SendDataBatch(MDM_CS_MANAGER_SERVICE,SUB_CS_S_PROPERTY_TRUMPET,pData,wDataSize,0L);
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>վ<EFBFBD><D5BE><EFBFBD>ط<EFBFBD><D8B7><EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::OnTCPNetworkMainWebService(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID)
|
|||
|
|
{
|
|||
|
|
switch (wSubCmdID)
|
|||
|
|
{
|
|||
|
|
case SUB_CS_C_SET_CHEAT_USER:
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>֪ͨ
|
|||
|
|
m_pITCPNetworkEngine->SendDataBatch(MDM_CS_WEB_SERVICE, SUB_CS_S_SET_CHEAT_USER, pData, wDataSize, 0L);
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
case SUB_CS_C_SET_CARD_LIB:
|
|||
|
|
{
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(wDataSize == sizeof(CMD_CS_SetCardLib));
|
|||
|
|
if (wDataSize != sizeof(CMD_CS_SetCardLib)) return false;
|
|||
|
|
|
|||
|
|
CMD_CS_SetCardLib* pCardLib = (CMD_CS_SetCardLib*)pData;
|
|||
|
|
SendDataToKindGame(pCardLib->wKindID, MDM_CS_WEB_SERVICE, SUB_CS_S_SET_CARD_LIB, pData, wDataSize);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
case SUB_CS_C_CARD_LIB_GLOBAL_CFG:
|
|||
|
|
{
|
|||
|
|
//Ч<><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ASSERT(wDataSize == sizeof(CMD_CS_CardLibGlobalCfg));
|
|||
|
|
if (wDataSize != sizeof(CMD_CS_CardLibGlobalCfg)) return false;
|
|||
|
|
|
|||
|
|
CMD_CS_CardLibGlobalCfg* pCardLib = (CMD_CS_CardLibGlobalCfg*)pData;
|
|||
|
|
SendDataToKindGame(pCardLib->wKindID, MDM_CS_WEB_SERVICE, SUB_CS_S_CARD_LIB_GLOBAL_CFG, pData, wDataSize);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::SendServerListItem(DWORD dwSocketID)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
WORD wPacketSize=0L;
|
|||
|
|
POSITION Position=NULL;
|
|||
|
|
BYTE cbBuffer[SOCKET_TCP_PACKET];
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_CS_SERVICE_INFO,SUB_CS_S_SERVER_INFO);
|
|||
|
|
|
|||
|
|
//<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
do
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if ((wPacketSize+sizeof(tagGameServer))>sizeof(cbBuffer))
|
|||
|
|
{
|
|||
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_CS_SERVICE_INFO,SUB_CS_S_SERVER_INSERT,cbBuffer,wPacketSize);
|
|||
|
|
wPacketSize=0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
tagGameServer * pGameServer=(tagGameServer *)(cbBuffer+wPacketSize);
|
|||
|
|
CGlobalServerItem * pGlobalServerItem=m_GlobalInfoManager.EnumServerItem(Position);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (pGlobalServerItem!=NULL)
|
|||
|
|
{
|
|||
|
|
wPacketSize+=sizeof(tagGameServer);
|
|||
|
|
CopyMemory(pGameServer,&pGlobalServerItem->m_GameServer,sizeof(tagGameServer));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
} while (Position!=NULL);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (wPacketSize>0) m_pITCPNetworkEngine->SendData(dwSocketID,MDM_CS_SERVICE_INFO,SUB_CS_S_SERVER_INSERT,cbBuffer,wPacketSize);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_CS_SERVICE_INFO,SUB_CS_S_SERVER_FINISH);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::SendMatchListItem(DWORD dwSocketID)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
WORD wPacketSize=0L;
|
|||
|
|
POSITION Position=NULL;
|
|||
|
|
BYTE cbBuffer[SOCKET_TCP_PACKET];
|
|||
|
|
|
|||
|
|
//<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
do
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if ((wPacketSize+sizeof(tagGameServer))>sizeof(cbBuffer))
|
|||
|
|
{
|
|||
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,MDM_CS_SERVICE_INFO,SUB_CS_S_MATCH_INSERT,cbBuffer,wPacketSize);
|
|||
|
|
wPacketSize=0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
tagGameMatch * pGameMatch=(tagGameMatch *)(cbBuffer+wPacketSize);
|
|||
|
|
CGlobalServerItem * pGlobalServerItem=m_GlobalInfoManager.EnumServerItem(Position);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (pGlobalServerItem!=NULL && pGlobalServerItem->IsMatchServer())
|
|||
|
|
{
|
|||
|
|
wPacketSize+=sizeof(tagGameMatch);
|
|||
|
|
CopyMemory(pGameMatch,&pGlobalServerItem->m_GameMatch,sizeof(tagGameMatch));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
} while (Position!=NULL);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (wPacketSize>0) m_pITCPNetworkEngine->SendData(dwSocketID,MDM_CS_SERVICE_INFO,SUB_CS_S_MATCH_INSERT,cbBuffer,wPacketSize);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::SendDataToKindGame(WORD wKindID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize)
|
|||
|
|
{
|
|||
|
|
POSITION Position = NULL;
|
|||
|
|
|
|||
|
|
//<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
do
|
|||
|
|
{
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
CGlobalServerItem * pServerItem = m_GlobalInfoManager.EnumServerItem(Position);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (pServerItem == NULL || pServerItem->GetKindID() != wKindID)
|
|||
|
|
{
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
WORD wBindIndex = pServerItem->GetIndex();
|
|||
|
|
|
|||
|
|
ASSERT(wBindIndex < m_pInitParameter->m_wMaxConnect);
|
|||
|
|
if (wBindIndex >= m_pInitParameter->m_wMaxConnect)
|
|||
|
|
{
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
tagBindParameter * pBindParameter = (m_pBindParameter + wBindIndex);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
DWORD dwSocketID = pBindParameter->dwSocketID;
|
|||
|
|
m_pITCPNetworkEngine->SendData(dwSocketID, wMainCmdID, wSubCmdID, pData, wDataSize);
|
|||
|
|
|
|||
|
|
} while (Position != NULL);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>䷢<EFBFBD><E4B7A2>
|
|||
|
|
bool CAttemperEngineSink::SendDataToGame(WORD wServerID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>
|
|||
|
|
CGlobalServerItem * pGlobalServerItem=m_GlobalInfoManager.SearchServerItem(wServerID);
|
|||
|
|
if (pGlobalServerItem==NULL) return false;
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
WORD wBindIndex=pGlobalServerItem->GetIndex();
|
|||
|
|
tagBindParameter * pBindParameter=(m_pBindParameter+wBindIndex);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
DWORD dwSocketID=pBindParameter->dwSocketID;
|
|||
|
|
m_pITCPNetworkEngine->SendData(dwSocketID,wMainCmdID,wSubCmdID,pData,wDataSize);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool CAttemperEngineSink::SendDataToUser(WORD wServerID, DWORD dwUserID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize)
|
|||
|
|
{
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////////////
|