From 9010b2c1427163195d90c7f4d50013178196da98 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Mon, 1 Apr 2019 19:47:29 +0200 Subject: [PATCH] Put queries into queue if send buffer is full. --- server/TracyWorker.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index 59507479..8397b93f 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -1765,6 +1765,14 @@ void Worker::Exec() if( m_bufferOffset > TargetFrameSize * 2 ) m_bufferOffset = 0; HandlePostponedPlots(); + + while( !m_serverQueryQueue.empty() && m_serverQuerySpaceLeft > 0 ) + { + m_serverQuerySpaceLeft--; + const auto& query = m_serverQueryQueue.back(); + m_sock.Send( &query, ServerQueryPacketSize ); + m_serverQueryQueue.pop_back(); + } } auto t1 = std::chrono::high_resolution_clock::now(); @@ -1814,8 +1822,15 @@ close: void Worker::Query( ServerQuery type, uint64_t data ) { ServerQueryPacket query = { type, data }; - m_serverQuerySpaceLeft--; - m_sock.Send( &query, ServerQueryPacketSize ); + if( m_serverQuerySpaceLeft > 0 ) + { + m_serverQuerySpaceLeft--; + m_sock.Send( &query, ServerQueryPacketSize ); + } + else + { + m_serverQueryQueue.insert( m_serverQueryQueue.begin(), query ); + } } bool Worker::DispatchProcess( const QueueItem& ev, char*& ptr )