86 lines
1.7 KiB
C++
86 lines
1.7 KiB
C++
|
|
#include "StdAfx.h"
|
|||
|
|
|
|||
|
|
using namespace jxSrvDef;
|
|||
|
|
|
|||
|
|
CCommonClient::CCommonClient()
|
|||
|
|
{
|
|||
|
|
SetClientName(_T("普通逻辑"));
|
|||
|
|
m_vFreeList.setLock(&m_vFreeListLock);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CCommonClient::~CCommonClient()
|
|||
|
|
{
|
|||
|
|
m_vFreeList.flush();
|
|||
|
|
for (INT_PTR i = 0; i < m_vFreeList.count(); i++)
|
|||
|
|
{
|
|||
|
|
CDataPacket* dp = m_vFreeList[i];
|
|||
|
|
if(dp) {
|
|||
|
|
dp->setPosition(0);
|
|||
|
|
flushSendPacket(*dp);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_vFreeList.clear();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
VOID CCommonClient::OnDispatchRecvPacket(const jxSrvDef::INTERSRVCMD nCmd, CDataPacketReader &inPacket)
|
|||
|
|
{
|
|||
|
|
if (nCmd <= 0)
|
|||
|
|
{
|
|||
|
|
if(nCmd <0)
|
|||
|
|
{
|
|||
|
|
OutputMsg(rmWaning, _T("%s recv unknown msg[id=%d]"), __FUNCTION__, (int)nCmd);
|
|||
|
|
}
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CDataPacket *outPacket = AllocSendPacket();
|
|||
|
|
if (!outPacket)
|
|||
|
|
{
|
|||
|
|
OutputMsg(rmError, _T("%s Alloc Packet Failed"), __FUNCTION__);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
outPacket->writeBuf(inPacket.getOffsetPtr(), inPacket.getAvaliableLength());
|
|||
|
|
GetGlobalLogicEngine()->GetNetWorkHandle()->PostInternalMessage(
|
|||
|
|
SSM_COMMONLOGIC_2_LOGIC_DATA, // 公共服务器 -> 逻辑服务器
|
|||
|
|
nCmd, // 消息ID
|
|||
|
|
(INT_PTR)outPacket); // 消息数据
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
jxSrvDef::SERVERTYPE CCommonClient::getLocalServerType()
|
|||
|
|
{
|
|||
|
|
return jxSrvDef::GameServer;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
LPCSTR CCommonClient::getLocalServerName()
|
|||
|
|
{
|
|||
|
|
return GetLogicServer()->getServerName();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CCommonClient::getLocalServerIndex()
|
|||
|
|
{
|
|||
|
|
return GetLogicServer()->GetServerIndex();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CDataPacket* CCommonClient::AllocSendPacket()
|
|||
|
|
{
|
|||
|
|
if (m_vFreeList.count() <= 0)
|
|||
|
|
{
|
|||
|
|
m_vFreeList.flush();
|
|||
|
|
}
|
|||
|
|
if (m_vFreeList.count() <= 0)
|
|||
|
|
{
|
|||
|
|
allocSendPacketList(m_vFreeList,512);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CDataPacket* m_TempData = m_vFreeList.pop();
|
|||
|
|
m_TempData->setLength(0);
|
|||
|
|
return m_TempData;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CCommonClient::FreeBackUserDataPacket(CDataPacket *pPacket)
|
|||
|
|
{
|
|||
|
|
m_vFreeList.append(pPacket);
|
|||
|
|
}
|