SuperHandler.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #pragma once
  2. #include <ProtocolHandler.h>
  3. #include <ZlDataDefine.h>
  4. #include <mutex>
  5. class CLibEventTCPClient;
  6. struct per_user_data;
  7. class CSendTask
  8. {
  9. public:
  10. CSendTask(LPBYTE pPack, int nPackLen, uint32_t packno, E_ZL_PROTOCAL protocal, bool);
  11. void join();//释放调用这个
  12. private:
  13. ~CSendTask();
  14. public:
  15. LPBYTE pdata;
  16. int nlen;
  17. uint32_t packno;
  18. E_ZL_PROTOCAL protocal;
  19. bool bRePeatSend;
  20. };
  21. class CSuperHandler : public CProtocolHandler
  22. {
  23. public:
  24. CSuperHandler();
  25. ~CSuperHandler();
  26. public:
  27. BOOL HandlePack(LPBYTE pPack, int nPackLen, SOCKADDR* psa, void* pClientContext = NULL) override;
  28. BOOL RecvPack(uint32_t packno, E_ZL_PROTOCAL protocal);
  29. BOOL HandleSubNotify(LPHJDATAHEAD2 lpHead, char* json, int json_len);
  30. inline void SetFather(per_user_data* a)
  31. {
  32. m_pFather = a;
  33. }
  34. inline void SetClient(CLibEventTCPClient* pClient)
  35. {
  36. m_pClient = pClient;
  37. }
  38. inline size_t tasksize()
  39. {
  40. return m_task.size();
  41. }
  42. //重发, 有单独线程调用
  43. BOOL ReSend();
  44. bool Send(uint8_t* data, uint32_t len);
  45. void Insert(LPBYTE pPack, int nPackLen, uint32_t packno, E_ZL_PROTOCAL protocal, bool);
  46. protected:
  47. per_user_data* m_pFather = nullptr;
  48. CLibEventTCPClient* m_pClient = nullptr;
  49. std::list<CSendTask*> m_task;
  50. std::mutex m_mtx;
  51. };