From 8e0bdaca4f4227bdb657b5c4a278349d47840034 Mon Sep 17 00:00:00 2001 From: azw Date: Mon, 17 Apr 2023 03:05:53 +0000 Subject: [PATCH] 1 --- server/wsproxy/app.cc | 21 +++++++++++++++++++++ server/wsproxy/app.h | 1 + 2 files changed, 22 insertions(+) diff --git a/server/wsproxy/app.cc b/server/wsproxy/app.cc index bc61c28..b7ccb2b 100644 --- a/server/wsproxy/app.cc +++ b/server/wsproxy/app.cc @@ -562,5 +562,26 @@ void App::AddUdpMsg(a8::UdpPacket* pkt) void App::DispatchUdpMsg() { + long long starttick = a8::XGetTickCount(); + if (!udp_work_node_ && udp_top_node_) { + udp_msg_mutex_->lock(); + udp_work_node_ = udp_top_node_; + udp_top_node_ = nullptr; + udp_bot_node_ = nullptr; + udp_working_msgnode_size_ = udp_msgnode_size_; + udp_msg_mutex_->unlock(); + } + while (udp_work_node_) { + UdpMsgNode *pdelnode = udp_work_node_; + udp_work_node_ = pdelnode->next; + udp_working_msgnode_size_--; + if (a8::XGetTickCount() - starttick > 200) { + break; + } + }//end while + + if (!udp_work_node_) { + working_msgnode_size_ = 0; + } } diff --git a/server/wsproxy/app.h b/server/wsproxy/app.h index ec1ee6f..ff6ef8f 100644 --- a/server/wsproxy/app.h +++ b/server/wsproxy/app.h @@ -87,5 +87,6 @@ public: int msgnode_size_ = 0 ; int udp_msgnode_size_ = 0 ; int working_msgnode_size_ = 0; + int udp_working_msgnode_size_ = 0; };