| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #pragma once
- #include "../pch/pch.h"
- using boost::asio::ip::tcp;
- //跟服务器消息交互的格式,每次读写都是按这个报文来
- class PosMessage
- {
- public:
- enum { max_length = 1024 };
- char data[max_length];
- int m_length;
- };
- enum MESSAGE_TYPE
- {
- LOGIN_OFFLINE = 0,
- NEW_WAIMAI_ORDER = 1,
- QUXIAO_WAIMAI_ORDER = 2,
- REFUND_WAIMAI_ORDER = 3,
- NEW_KAUICANTANGSHI_ORDER = 4,
- };
- //这个类专门用于接收服务器端的消息推送
- class CMessagePushWorker
- {
- public:
- static CMessagePushWorker* GetInstance()
- {
- static CMessagePushWorker instance;
- return &instance;
- }
- //开始工作
- void Start();
- //停止工作
- void Stop();
- //发送心跳包
- void KeepAlive();
- //专门处理推送消息
- void ReceiveMessage();
- void SetHWND(HWND hwnd);
- private:
- CMessagePushWorker()
- : socket_(m_io_context)
- {
- }
- void AddStopNum();
- void HandelMessage(std::string msg);
- private:
- bool m_is_work;
- int m_nStopNum = 0;
- std::mutex m_nStopNumMutex;
- boost::asio::io_context m_io_context;
- tcp::socket socket_;
- enum { max_length = 1024 };
- char data_[max_length];
- HWND m_hwnd;
- bool m_is_sleep;
- std::mutex sleepMutex;
- };
|