Files
mir_server/server/DBServer/DBCenterClient.h

141 lines
4.1 KiB
C
Raw Normal View History

2025-01-09 17:45:40 +08:00
#ifndef DBCENTER_CLIENT_H_
#define DBCENTER_CLIENT_H_
/*
DBCenter的Client封装类
*/
class CDBServer;
class CDBGateManager;
class CDBDataServer;
class CDBCenterClient : public CCustomJXClientSocket,
public ILogicDBRequestHost
{
public:
typedef CCustomJXClientSocket Inherited;
public:
CDBCenterClient(CDBServer *pDBEngine);
virtual ~CDBCenterClient();
void Init();
void Stop();
/*
* Comments:
* Param const CBaseList<int> & serverIdList:
* @Return void:
* @Remark:
*/
void PostUpdateLogicClientList(const CBaseList<int> &serverIdList);
/*
* Comments: DBServer连接的逻辑客户端列表
* Param INT_PTR nCount:
* Param int *idList: ID列表
* @Return void:
* @Remark:
*/
void UpdateLogicClientList(INT_PTR nCount, int *idList);
/*
* Comments: CDataPacket类
* Param CDataPacket * pPacket:
* @Return void:
* @Remark: CommonClient收到来自CommonServer的数据包之后线
线
*/
void FreeBackUserDataPacket(CDataPacket* pPacket);
//////////////////////////////////////////////////////////////////////////
// ILogicDBRequestHost
virtual CDataPacket& AllocDataPacket(const jxSrvDef::INTERSRVCMD nCmd);
virtual void FlushDataPacket(CDataPacket &packet);
virtual int CatchCreateGuild(int nActor,
LPCSTR sGuildName,
LPCSTR sFoundName,
int nIndex,
Uint64 hActor,
BYTE nZY,
INT_PTR nIcon)
{
return 0;
}
//追踪内存
void Trace()
{
OutputMsg(rmNormal,"---------------CDBCenterClient Trace...------");
m_sDataHandler.Trace();
OutputMsg(rmNormal,"---------------CDBCenterClient Trace end-----");
}
protected:
////////////////////////////////////////////////////////////////////////////////////////////////////
// Virtual Function Of CCustomJXClientSocket
virtual LPCSTR getLocalServerName();
virtual jxSrvDef::SERVERTYPE getLocalServerType();
//TODO. 临时测试用。DBServer不需要这个而是需要自己维护DB连接的逻辑服务器ID的列表
virtual int getLocalServerIndex();
virtual VOID OnDispatchRecvPacket(const jxSrvDef::INTERSRVCMD nCmd, CDataPacketReader &inPacket);
virtual VOID DispatchInternalMessage(UINT uMsg, UINT64 uParam1, UINT64 uParam2, UINT64 uParam3, UINT64 uParam4);
/*
* Comments: DBCenter转发的网关请求
* Param CDataPacketReader & inPacket:
* @Return void:
* @Remark: DBCenter转发的网关请求包括选择角色
DB请求
*/
void HandleDBGateRequest(CDataPacketReader &inPacket);
/*
* Comments:
* Param CDataPacketReader & inPacket:
* @Return void:
* @Remark:
*/
void OnRecvQueryActorList(CDataPacketReader &inPacket);
/*
* Comments:
* Param CDataPacketReader & inPacket:
* @Return void:
* @Remark:
*/
void OnRecvEnterGame(CDataPacketReader &inPacket);
/*
* Comments: DBCenter转发的逻辑请求
* Param CDataPacketReader & inPacket:
* @Return void:
* @Remark:
*/
void HandleLogicRequest(CDataPacketReader &inPacket);
/*
* Comments:
* @Return CDataPacket*:
* @Remark: 线线
*/
CDataPacket* AllocSendPacket();
private:
static const int DBC_INTERNAL_UPDATECLIENTLIST = 101; // 更新连接的逻辑客户端列表内部消息
private:
CDBServer *m_pDBEngine;
CDBGateManager *m_pGateMgr;
CGateDBReqestHandler m_gateDBReqHandler;
CDBDataClientHandler m_sDataHandler; // DB请求处理类
CGateDBReqestHandler m_loginHandler;
//CLogicDBReqestHandler m_logicDBReqHandler;
CSQLConenction *m_pSQLConn;
CQueueList<CDataPacket*> m_vFreeList;
CCSLock m_vFreeListLock;
};
#endif