Files
mir_server/sdk/srvlib/include/CustomClientSocket.h

126 lines
3.6 KiB
C
Raw Normal View History

2025-01-09 17:45:40 +08:00
#ifndef _CUSTOM_CLIENT_SOCKET_H_
#define _CUSTOM_CLIENT_SOCKET_H_
/************************************************************
线
使使
便
***********************************************************/
#include "_osdef.h"
#include "Thread.h"
using namespace wylib::time::tick64;
using namespace wylib::container;
using namespace wylib::sync::lock;
using namespace wylib::thread;
class CCustomClientSocket :
public CCustomWorkSocket,
public wylib::thread::CBaseThread
{
public:
typedef CCustomWorkSocket Inherited;
typedef wylib::thread::CBaseThread InheritedThread;
public:
CCustomClientSocket();
virtual ~CCustomClientSocket();
//获取客户端名称
inline LPCTSTR GetClientName(){ return m_sClientName; };
//获取远程服务器地址
inline LPCTSTR GetServerHost(){ return m_sSrvHost; }
//设置远程服务器地址(支持域名)
VOID SetServerHost(LPCTSTR sHost);
//获取远程服务器端口
inline INT_PTR GetServerPort(){ return m_nSrvPort; }
//设置远程服务器端口
VOID SetServerPort(const INT_PTR nPort);
//启动客户端
BOOL Startup();
//停止客户端
VOID Stop();
//是否要检测内存
VOID SetCheckMemory(bool bCheckMemory)
{
m_bNeedCheckMemory =bCheckMemory;
}
protected:
const static int CHECK_MEMORY_INTERVAL = 5 * 60 * 1000;
/*** 以下函数集为子类可能需要覆盖的函数 ***/
//当连接处理线程启动后立即调用
virtual VOID OnWorkThreadStart();
//当连接处理线程停止前调用
virtual VOID OnWorkThreadStop();
//连接到服务器成功后发送注册客户端的消息
virtual VOID SendRegisteClient();
//当长时间没有通信后发送保持连接的消息
virtual VOID SendKeepAlive();
protected:
//设置客户端名称
VOID SetClientName(LPCTSTR sClientName);
//连接到服务器
BOOL ConnectToServer();
//覆盖例行执行函数
VOID SingleRun();
//获取工作线程ID
DWORD GetWorkThreadId();
protected:
//覆盖连接已经建立的函数
VOID Connected();
//覆盖断开连接的处理函数
VOID Disconnected();
//覆盖套接字错误的函数
VOID SocketError(INT errorCode);
virtual void OnRountine() ; //定时调用
virtual void OnThreadStarted();
virtual void OnTerminated();
private:
//客户端连接处理线程例行函数
//static VOID STDCALL CustomClientSocketWorkRoutine(CCustomClientSocket *lpClient);
private:
TCHAR m_sSrvHost[256]; //服务器地址
INT_PTR m_nSrvPort; //服务器端口
TCHAR m_sClientName[256]; //客户端名称
//volatile LONG m_boStoped; //是否标记为停止
//THREAD_HANDLE m_hThread;
//DWORD m_dwThreadId; //工作线程ID
//HANDLE m_hThread; //工作线程句柄
TICKCOUNT m_dwReconnectTick; //重新连接服务器的时间
TICKCOUNT m_dwCheckMemoryTick; //检测内存的时间
LOOPPERFORMANCE m_LoopPerformance; //数据处理主循环性能统计
PERFORMANCEINFO m_MainProcPerformance; //主循环性能统计
PERFORMANCEINFO m_MainSleepPerformance; //主循休眠状态统计
bool m_bNeedCheckMemory; //是否需要定期检测内存
};
#endif