#pragma once #include "../pch/pch.h" #include "../order/CWaimaiOrder.h" using boost::asio::ip::tcp; class CClientMessage { public: int m_type; //消息类型 0:新的外卖订单 std::string m_username; std::string m_order_id; std::string m_order_no; }; class WaimaiPinterInfo { public: std::string order_id; std::string order_no; int print_type; //打印类型 1:新订单自动打印 2:手动打印 }; class CMessagePush { public: CMessagePush(HWND hwnd) : socket_(m_io_context) { m_hwnd = hwnd; } ~CMessagePush(); //开始工作 void Start(); //停止工作 void Stop(); //发送心跳包 void KeepAlive(); //专门处理推送消息 void ReceiveMessage(); //队列处理 void HandleVoice(); void HandleConfirm(); void HandlePrinter(); void HandleShouyinPrinter(); void HandleChufangPrinter(); void AddVoice(int voice_type); void AddConfirm(std::string order_id); void AddPinter(std::string order_id, std::string order_no, int print_type); void AddShouyinPrinter(CWaimaiOrder order); void AddChufangPrinter(CWaimaiOrder order); private: void AddStopNum(); 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]; std::queue m_voice_queue; std::queue m_confirm_queue; std::queue m_printer_queue; std::queue m_shouyin_printer_queue; std::queue m_chufang_printer_queue; std::mutex m_voice_mutex; std::mutex m_confirm_mutex; std::mutex m_printer_mutex; std::mutex m_shouyin_printer_mutex; std::mutex m_chufang_printer_mutex; HWND m_hwnd; };