mirror of
https://github.com/wolfpld/tracy.git
synced 2025-03-20 07:40:02 +08:00
Remove ability to disable LZ4 compression.
This commit is contained in:
+18
-78
@@ -433,13 +433,11 @@ void View::Worker()
|
||||
|
||||
std::chrono::time_point<std::chrono::high_resolution_clock> t0;
|
||||
|
||||
uint8_t lz4;
|
||||
uint64_t bytes = 0;
|
||||
|
||||
{
|
||||
WelcomeMessage welcome;
|
||||
if( !m_sock.Read( &welcome, sizeof( welcome ), &tv, ShouldExit ) ) goto close;
|
||||
lz4 = welcome.lz4;
|
||||
m_timerMul = welcome.timerMul;
|
||||
m_frames.push_back( welcome.initBegin * m_timerMul );
|
||||
m_frames.push_back( welcome.initEnd * m_timerMul );
|
||||
@@ -466,42 +464,27 @@ void View::Worker()
|
||||
{
|
||||
if( m_shutdown.load( std::memory_order_relaxed ) ) return;
|
||||
|
||||
if( lz4 )
|
||||
auto buf = m_buffer + m_bufferOffset;
|
||||
char lz4buf[LZ4Size];
|
||||
lz4sz_t lz4sz;
|
||||
if( !m_sock.Read( &lz4sz, sizeof( lz4sz ), &tv, ShouldExit ) ) goto close;
|
||||
if( !m_sock.Read( lz4buf, lz4sz, &tv, ShouldExit ) ) goto close;
|
||||
bytes += sizeof( lz4sz ) + lz4sz;
|
||||
|
||||
auto sz = LZ4_decompress_safe_continue( m_stream, lz4buf, buf, lz4sz, TargetFrameSize );
|
||||
assert( sz >= 0 );
|
||||
|
||||
const char* ptr = buf;
|
||||
const char* end = buf + sz;
|
||||
while( ptr < end )
|
||||
{
|
||||
auto buf = m_buffer + m_bufferOffset;
|
||||
char lz4buf[LZ4Size];
|
||||
lz4sz_t lz4sz;
|
||||
if( !m_sock.Read( &lz4sz, sizeof( lz4sz ), &tv, ShouldExit ) ) goto close;
|
||||
if( !m_sock.Read( lz4buf, lz4sz, &tv, ShouldExit ) ) goto close;
|
||||
bytes += sizeof( lz4sz ) + lz4sz;
|
||||
|
||||
auto sz = LZ4_decompress_safe_continue( m_stream, lz4buf, buf, lz4sz, TargetFrameSize );
|
||||
assert( sz >= 0 );
|
||||
|
||||
const char* ptr = buf;
|
||||
const char* end = buf + sz;
|
||||
while( ptr < end )
|
||||
{
|
||||
auto ev = (QueueItem*)ptr;
|
||||
DispatchProcess( *ev, ptr );
|
||||
}
|
||||
|
||||
m_bufferOffset += sz;
|
||||
if( m_bufferOffset > TargetFrameSize * 2 ) m_bufferOffset = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
QueueItem ev;
|
||||
if( !m_sock.Read( &ev.hdr, sizeof( QueueHeader ), &tv, ShouldExit ) ) goto close;
|
||||
const auto payload = QueueDataSize[ev.hdr.idx] - sizeof( QueueHeader );
|
||||
if( payload > 0 )
|
||||
{
|
||||
if( !m_sock.Read( ((char*)&ev) + sizeof( QueueHeader ), payload, &tv, ShouldExit ) ) goto close;
|
||||
}
|
||||
bytes += sizeof( QueueHeader ) + payload; // ignores string transfer
|
||||
DispatchProcess( ev );
|
||||
auto ev = (QueueItem*)ptr;
|
||||
DispatchProcess( *ev, ptr );
|
||||
}
|
||||
|
||||
m_bufferOffset += sz;
|
||||
if( m_bufferOffset > TargetFrameSize * 2 ) m_bufferOffset = 0;
|
||||
|
||||
HandlePostponedPlots();
|
||||
|
||||
auto t1 = std::chrono::high_resolution_clock::now();
|
||||
@@ -544,49 +527,6 @@ close:
|
||||
}
|
||||
}
|
||||
|
||||
void View::DispatchProcess( const QueueItem& ev )
|
||||
{
|
||||
if( ev.hdr.type == QueueType::CustomStringData || ev.hdr.type == QueueType::StringData || ev.hdr.type == QueueType::ThreadName || ev.hdr.type == QueueType::PlotName || ev.hdr.type == QueueType::MessageData || ev.hdr.type == QueueType::SourceLocationPayload )
|
||||
{
|
||||
timeval tv;
|
||||
tv.tv_sec = 0;
|
||||
tv.tv_usec = 10000;
|
||||
|
||||
char buf[TargetFrameSize];
|
||||
uint16_t sz;
|
||||
m_sock.Read( &sz, sizeof( sz ), &tv, ShouldExit );
|
||||
m_sock.Read( buf, sz, &tv, ShouldExit );
|
||||
switch( ev.hdr.type )
|
||||
{
|
||||
case QueueType::CustomStringData:
|
||||
AddCustomString( ev.stringTransfer.ptr, std::string( buf, buf+sz ) );
|
||||
break;
|
||||
case QueueType::StringData:
|
||||
AddString( ev.stringTransfer.ptr, std::string( buf, buf+sz ) );
|
||||
break;
|
||||
case QueueType::ThreadName:
|
||||
AddThreadString( ev.stringTransfer.ptr, std::string( buf, buf+sz ) );
|
||||
break;
|
||||
case QueueType::PlotName:
|
||||
HandlePlotName( ev.stringTransfer.ptr, std::string( buf, buf+sz ) );
|
||||
break;
|
||||
case QueueType::MessageData:
|
||||
AddMessageData( ev.stringTransfer.ptr, buf, sz );
|
||||
break;
|
||||
case QueueType::SourceLocationPayload:
|
||||
AddSourceLocationPayload( ev.stringTransfer.ptr, buf, sz );
|
||||
break;
|
||||
default:
|
||||
assert( false );
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Process( ev );
|
||||
}
|
||||
}
|
||||
|
||||
void View::DispatchProcess( const QueueItem& ev, const char*& ptr )
|
||||
{
|
||||
ptr += QueueDataSize[ev.hdr.idx];
|
||||
|
||||
Reference in New Issue
Block a user