|
|
@@ -14,31 +14,55 @@ CMessagePush::~CMessagePush()
|
|
|
void CMessagePush::Start()
|
|
|
{
|
|
|
//心跳包
|
|
|
- std::thread t_1(&CMessagePush::KeepAlive, this);
|
|
|
- t_1.detach();
|
|
|
+ std::thread(&CMessagePush::KeepAlive, this).detach();
|
|
|
|
|
|
//接收消息
|
|
|
- std::thread t_7(&CMessagePush::ReceiveMessage, this);
|
|
|
- t_7.detach();
|
|
|
+ std::thread(&CMessagePush::ReceiveMessage, this).detach();
|
|
|
|
|
|
//处理声音提醒
|
|
|
- std::thread t_2(&CMessagePush::HandleVoice, this);
|
|
|
- t_2.detach();
|
|
|
+ std::thread(&CMessagePush::HandleVoice, this).detach();
|
|
|
|
|
|
//处理订单确认
|
|
|
- std::thread t_3(&CMessagePush::HandleConfirm, this);
|
|
|
- t_3.detach();
|
|
|
+ std::thread(&CMessagePush::HandleConfirm, this).detach();
|
|
|
+
|
|
|
+ //处理打印
|
|
|
+ std::thread(&CMessagePush::HandlePrinter, this).detach();
|
|
|
|
|
|
//处理收银打印
|
|
|
- std::thread t_4(&CMessagePush::HandleShouyinPrinter, this);
|
|
|
- t_4.detach();
|
|
|
+ std::thread(&CMessagePush::HandleShouyinPrinter, this).detach();
|
|
|
|
|
|
//处理厨房打印
|
|
|
- std::thread t_5(&CMessagePush::HandleChufangPrinter, this);
|
|
|
- t_5.detach();
|
|
|
+ std::thread(&CMessagePush::HandleChufangPrinter, this).detach();
|
|
|
+}
|
|
|
+
|
|
|
+void CMessagePush::Stop()
|
|
|
+{
|
|
|
+ m_is_work = false;
|
|
|
+
|
|
|
+ while (!m_voice_queue.empty())
|
|
|
+ {
|
|
|
+ m_voice_queue.pop();
|
|
|
+ }
|
|
|
+
|
|
|
+ while (!m_confirm_queue.empty())
|
|
|
+ {
|
|
|
+ m_confirm_queue.pop();
|
|
|
+ }
|
|
|
|
|
|
- std::thread t_6(&CMessagePush::HandlePrinter, this);
|
|
|
- t_6.detach();
|
|
|
+ while (!m_printer_queue.empty())
|
|
|
+ {
|
|
|
+ m_printer_queue.pop();
|
|
|
+ }
|
|
|
+
|
|
|
+ while (!m_shouyin_printer_queue.empty())
|
|
|
+ {
|
|
|
+ m_shouyin_printer_queue.pop();
|
|
|
+ }
|
|
|
+
|
|
|
+ while (!m_chufang_printer_queue.empty())
|
|
|
+ {
|
|
|
+ m_chufang_printer_queue.pop();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void CMessagePush::KeepAlive()
|
|
|
@@ -50,7 +74,8 @@ void CMessagePush::KeepAlive()
|
|
|
doc.SetObject();
|
|
|
rapidjson::Document::AllocatorType& allocator = doc.GetAllocator(); //获取分配器
|
|
|
|
|
|
- doc.AddMember("username", "zhangyang", allocator);
|
|
|
+ std::string username = CSetting::getUsername();
|
|
|
+ doc.AddMember("username", StringRef(username.c_str(), username.length()), allocator);
|
|
|
|
|
|
rapidjson::StringBuffer buffer;
|
|
|
rapidjson::Writer<StringBuffer> writer(buffer);
|
|
|
@@ -67,7 +92,6 @@ void CMessagePush::KeepAlive()
|
|
|
{
|
|
|
//走到这里来说明心跳包发送失败了,socket失效了
|
|
|
std::string err = e.what();
|
|
|
- //LOG_INFO("write err info:" << err.c_str());
|
|
|
|
|
|
//先把socket关闭掉
|
|
|
socket_.close();
|
|
|
@@ -113,7 +137,7 @@ void CMessagePush::KeepAlive()
|
|
|
|
|
|
void CMessagePush::ReceiveMessage()
|
|
|
{
|
|
|
- while (true)
|
|
|
+ while (m_is_work)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
@@ -235,7 +259,7 @@ void CMessagePush::AddChufangPrinter(CWaimaiOrder order)
|
|
|
|
|
|
void CMessagePush::HandleVoice()
|
|
|
{
|
|
|
- while(true)
|
|
|
+ while(m_is_work)
|
|
|
{
|
|
|
m_voice_mutex.lock();
|
|
|
|
|
|
@@ -262,7 +286,7 @@ void CMessagePush::HandleVoice()
|
|
|
|
|
|
void CMessagePush::HandleConfirm()
|
|
|
{
|
|
|
- while(true)
|
|
|
+ while(m_is_work)
|
|
|
{
|
|
|
m_confirm_mutex.lock();
|
|
|
|
|
|
@@ -286,7 +310,7 @@ void CMessagePush::HandleConfirm()
|
|
|
|
|
|
void CMessagePush::HandlePrinter()
|
|
|
{
|
|
|
- while(true)
|
|
|
+ while(m_is_work)
|
|
|
{
|
|
|
m_printer_mutex.lock();
|
|
|
|
|
|
@@ -328,7 +352,7 @@ void CMessagePush::HandlePrinter()
|
|
|
|
|
|
void CMessagePush::HandleShouyinPrinter()
|
|
|
{
|
|
|
- while(true)
|
|
|
+ while(m_is_work)
|
|
|
{
|
|
|
m_shouyin_printer_mutex.lock();
|
|
|
|
|
|
@@ -353,7 +377,7 @@ void CMessagePush::HandleShouyinPrinter()
|
|
|
|
|
|
void CMessagePush::HandleChufangPrinter()
|
|
|
{
|
|
|
- while(true)
|
|
|
+ while(m_is_work)
|
|
|
{
|
|
|
m_chufang_printer_mutex.lock();
|
|
|
|