| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | #pragma once#include <ProtocolHandler.h>#include <ZlDataDefine.h>#include <mutex>class CLibEventTCPClient;struct per_user_data;class CSendTask{public:	CSendTask(LPBYTE pPack, int nPackLen, uint32_t packno, E_ZL_PROTOCAL protocal, bool);	void join();//释放调用这个private:	~CSendTask();public:	LPBYTE pdata;	int nlen;	uint32_t packno;	E_ZL_PROTOCAL protocal;	bool bRePeatSend;};class CSuperHandler : public CProtocolHandler{public:	CSuperHandler();	~CSuperHandler();public:	BOOL HandlePack(LPBYTE pPack, int nPackLen, SOCKADDR* psa, void* pClientContext = NULL) override;	BOOL RecvPack(uint32_t packno, E_ZL_PROTOCAL protocal);	BOOL HandleSubNotify(LPHJDATAHEAD2 lpHead, char* json, int json_len);	inline void SetFather(per_user_data* a)	{		m_pFather = a;	}	inline void SetClient(CLibEventTCPClient* pClient)	{		m_pClient = pClient;	}	inline size_t tasksize()	{		return m_task.size();	}	//重发, 有单独线程调用	BOOL ReSend();	bool Send(uint8_t* data, uint32_t len);	void Insert(LPBYTE pPack, int nPackLen, uint32_t packno, E_ZL_PROTOCAL protocal, bool);protected:	per_user_data* m_pFather = nullptr;	CLibEventTCPClient* m_pClient = nullptr;	std::list<CSendTask*> m_task;	std::mutex m_mtx;};
 |