From 70ad3407c05799d9c0112a7f6f4d90f0846fb353 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Fri, 22 Sep 2017 01:54:04 +0200 Subject: [PATCH] Rework client handling of server requests. --- client/TracyProfiler.cpp | 39 +++++++++++++++++++++++++++++---------- client/TracyProfiler.hpp | 4 +++- server/TracyView.cpp | 3 +++ 3 files changed, 35 insertions(+), 11 deletions(-) diff --git a/client/TracyProfiler.cpp b/client/TracyProfiler.cpp index 43345d7e..403dfb96 100755 --- a/client/TracyProfiler.cpp +++ b/client/TracyProfiler.cpp @@ -115,10 +115,6 @@ void Profiler::Worker() { enum { BulkSize = TargetFrameSize / QueueItemSize }; - timeval tv; - tv.tv_sec = 0; - tv.tv_usec = 10000; - moodycamel::ConsumerToken token( s_queue ); ListenSocket listen; @@ -172,9 +168,7 @@ void Profiler::Worker() while( m_sock->HasData() ) { - uint64_t ptr; - if( !m_sock->Read( &ptr, sizeof( ptr ), &tv, ShouldExit ) ) break; - SendString( ptr ); + if( !HandleServerQuery() ) break; } } } @@ -193,12 +187,12 @@ bool Profiler::SendData( const char* data, size_t len ) return true; } -bool Profiler::SendString( uint64_t str ) +bool Profiler::SendString( uint64_t str, const char* ptr, QueueType type ) { - auto ptr = (const char*)str; + assert( type == QueueType::StringData ); QueueHeader hdr; - hdr.type = QueueType::StringData; + hdr.type = type; hdr.id = str; auto buf = m_buffer + m_bufferOffset; @@ -217,4 +211,29 @@ bool Profiler::SendString( uint64_t str ) return SendData( buf, sizeof( hdr ) + sizeof( l16 ) + l16 ); } +bool Profiler::HandleServerQuery() +{ + timeval tv; + tv.tv_sec = 0; + tv.tv_usec = 10000; + + uint8_t type; + if( !m_sock->Read( &type, sizeof( type ), &tv, ShouldExit ) ) return false; + + uint64_t ptr; + if( !m_sock->Read( &ptr, sizeof( ptr ), &tv, ShouldExit ) ) return false; + + switch( type ) + { + case ServerQueryString: + SendString( ptr, (const char*)ptr, QueueType::StringData ); + break; + default: + assert( false ); + break; + } + + return true; +} + } diff --git a/client/TracyProfiler.hpp b/client/TracyProfiler.hpp index 693fc1d5..dbfe091a 100755 --- a/client/TracyProfiler.hpp +++ b/client/TracyProfiler.hpp @@ -37,7 +37,9 @@ private: void Worker(); bool SendData( const char* data, size_t len ); - bool SendString( uint64_t ptr ); + bool SendString( uint64_t ptr, const char* str, QueueType type ); + + bool HandleServerQuery(); int64_t m_timeBegin; std::thread m_thread; diff --git a/server/TracyView.cpp b/server/TracyView.cpp index 1357c2e6..deae5859 100755 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -290,6 +290,9 @@ void View::CheckString( uint64_t ptr ) if( m_pendingStrings.find( ptr ) != m_pendingStrings.end() ) return; m_pendingStrings.emplace( ptr ); + + uint8_t type = ServerQueryString; + m_sock.Send( &type, sizeof( type ) ); m_sock.Send( &ptr, sizeof( ptr ) ); }