From 252e02ba2ebf62a1b832eadf643302c4bf3fa71a Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Thu, 2 Apr 2020 12:15:50 +0200 Subject: [PATCH] One more place where server queue is handled. --- server/TracyWorker.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index 97d77266..dcbca9a4 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -3023,12 +3023,19 @@ void Worker::HandleFailure( const char* ptr, const char* end ) m_netWriteCv.notify_one(); } - while( !m_serverQueryQueue.empty() && m_serverQuerySpaceLeft > 0 ) + if( !m_serverQueryQueue.empty() && m_serverQuerySpaceLeft > 0 ) { - m_serverQuerySpaceLeft--; - const auto& query = m_serverQueryQueue.back(); - m_sock.Send( &query, ServerQueryPacketSize ); - m_serverQueryQueue.pop_back(); + const auto toSend = std::min( m_serverQuerySpaceLeft, m_serverQueryQueue.size() ); + m_sock.Send( m_serverQueryQueue.data(), toSend * ServerQueryPacketSize ); + m_serverQuerySpaceLeft -= toSend; + if( toSend == m_serverQueryQueue.size() ) + { + m_serverQueryQueue.clear(); + } + else + { + m_serverQueryQueue.erase( m_serverQueryQueue.begin(), m_serverQueryQueue.begin() + toSend ); + } } if( m_shutdown.load( std::memory_order_relaxed ) ) return;