CMessagePushWorker.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #pragma once
  2. #include "../pch/pch.h"
  3. using boost::asio::ip::tcp;
  4. //跟服务器消息交互的格式,每次读写都是按这个报文来
  5. class PosMessage
  6. {
  7. public:
  8. enum { max_length = 1024 };
  9. char data[max_length];
  10. int m_length;
  11. };
  12. enum MESSAGE_TYPE
  13. {
  14. LOGIN_OFFLINE = 0,
  15. NEW_WAIMAI_ORDER = 1,
  16. QUXIAO_WAIMAI_ORDER = 2,
  17. REFUND_WAIMAI_ORDER = 3,
  18. NEW_KAUICANTANGSHI_ORDER = 4,
  19. };
  20. //这个类专门用于接收服务器端的消息推送
  21. class CMessagePushWorker
  22. {
  23. public:
  24. static CMessagePushWorker* GetInstance()
  25. {
  26. static CMessagePushWorker instance;
  27. return &instance;
  28. }
  29. //开始工作
  30. void Start();
  31. //停止工作
  32. void Stop();
  33. //发送心跳包
  34. void KeepAlive();
  35. //专门处理推送消息
  36. void ReceiveMessage();
  37. void SetHWND(HWND hwnd);
  38. private:
  39. CMessagePushWorker()
  40. : socket_(m_io_context)
  41. {
  42. }
  43. void AddStopNum();
  44. void HandelMessage(std::string msg);
  45. private:
  46. bool m_is_work;
  47. int m_nStopNum = 0;
  48. std::mutex m_nStopNumMutex;
  49. boost::asio::io_context m_io_context;
  50. tcp::socket socket_;
  51. enum { max_length = 1024 };
  52. char data_[max_length];
  53. HWND m_hwnd;
  54. bool m_is_sleep;
  55. std::mutex sleepMutex;
  56. };