Files
mir_server/sdk/commonLib/include/CustomJXServerClientSocket.h

60 lines
2.1 KiB
C
Raw Permalink Normal View History

2025-01-09 17:45:40 +08:00
#pragma once
class CCustomJXServerClientSocket :
public CCustomServerClientSocket
{
public:
typedef CCustomServerClientSocket Inherited;
public:
//按通信协议申请一份发送数据包nCmd是通信消息号
//数据包填充完毕后需要调用flushProtoPacket提交到发送队列
CDataPacket& allocProtoPacket(const jxSrvDef::INTERSRVCMD nCmd);
//提交发送数据包到发送缓冲,会自动计算数据长度并向数据包的通信协议头部分写入长度值
VOID flushProtoPacket(CDataPacket& packet);
//服务器是否注册
inline bool registed(){ return m_boRegisted; }
//获取连接的服务器ID
inline unsigned int getClientServerIndex(){ return m_nClientSrvIdx; }
//获取连接的服务器名称
inline LPCSTR getClientName(){ return m_sClientName; }
//获取连接的服务器类型
inline jxSrvDef::SERVERTYPE getClientType(){ return m_eClientType; };
public:
CCustomJXServerClientSocket();
protected:
/*** 子类需覆盖的函数集 ***/
/* 处理单个通信数据包
* nCmd
* inPacket
*/
virtual VOID OnDispatchRecvPacket(const jxSrvDef::INTERSRVCMD nCmd, CDataPacketReader &inPacket) = 0;
/* 验证客户端注册数据是否有效
*@return true表示注册数据有效并false则关闭连接
*/
virtual bool OnValidateRegData(const jxSrvDef::PSERVER_REGDATA pRegData) = 0;
/*
* Comments:
* @Return void:
* @Remark:
*/
virtual void OnRegDataValidated(){};
VOID SendKeepAlive();
protected:
/* 覆盖父类的网络数据包处理函数以便实现通信协议的数据包解析 */
VOID ProcessRecvBuffers(PDATABUFFER pDataBuffer);
/* 覆盖父类连接断开的函数以便情况注册数据,从而使得对象可以重用 */
VOID Disconnected();
private:
bool m_boRegisted; //客户端是否已经注册连接
unsigned int m_nClientSrvIdx; //客户端的服务器ID
CHAR m_sClientName[40]; //客户端注册的服务器名称
jxSrvDef::SERVERTYPE m_eClientType; //客户端注册的服务器类型
};