| 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;
- };
|