Files
mir_server/sdk/commonLib/include/CustomJXServerClientSocket.h
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

60 lines
2.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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; //客户端注册的服务器类型
};