41 lines
1.5 KiB
C++
41 lines
1.5 KiB
C++
#pragma once
|
||
|
||
class CCustomJXClientSocket :
|
||
public CCustomClientSocket
|
||
{
|
||
public:
|
||
typedef CCustomClientSocket Inherited;
|
||
|
||
public:
|
||
//按通信协议申请一份发送数据包,nCmd是通信消息号,
|
||
//数据包填充完毕后需要调用flushProtoPacket提交到发送队列
|
||
CDataPacket& allocProtoPacket(const jxSrvDef::INTERSRVCMD nCmd);
|
||
|
||
//提交发送数据包到发送缓冲,会自动计算数据长度并向数据包的通信协议头部分写入长度值
|
||
VOID flushProtoPacket(CDataPacket& packet);
|
||
|
||
protected:
|
||
/*** 子类需覆盖的函数集 ***/
|
||
/* 处理单个通信数据包
|
||
* nCmd 通信消息命令
|
||
* inPacket 已经读取出通信命令的数据包,数据包的读取位置指向命令数据后的内容
|
||
*/
|
||
virtual VOID OnDispatchRecvPacket(const jxSrvDef::INTERSRVCMD nCmd, CDataPacketReader &inPacket) = 0;
|
||
|
||
/*** 下列函数为子类可能有必要覆盖的函数集 ***/
|
||
/* ★查询本地服务器的类型,以便正确的发送注册数据 */
|
||
virtual jxSrvDef::SERVERTYPE getLocalServerType() = 0;
|
||
|
||
/* ★查询本地服务器的名称,以便正确的发送注册数据 */
|
||
virtual LPCSTR getLocalServerName() = 0;
|
||
/* ★查询本地服务器ID,以便正确的发送注册数据,默认的返回值是0 */
|
||
virtual int getLocalServerIndex();
|
||
|
||
VOID SendKeepAlive();//heart tick
|
||
protected:
|
||
/*** 覆盖父类的网络数据包处理函数以便实现通信协议的数据包解析 ***/
|
||
VOID ProcessRecvBuffers(PDATABUFFER pDataBuffer);
|
||
/* 发送注册服务器的消息 */
|
||
VOID SendRegisteClient();
|
||
};
|