mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-26 07:54:36 +00:00
format 2
This commit is contained in:
parent
0848bb1603
commit
4f769258b4
@ -14,7 +14,8 @@
|
||||
|
||||
static bool s_isStdoutATerminal = false;
|
||||
|
||||
void InitIsStdoutATerminal() {
|
||||
void InitIsStdoutATerminal()
|
||||
{
|
||||
#ifdef _WIN32
|
||||
s_isStdoutATerminal = _isatty( fileno( stdout ) );
|
||||
#else
|
||||
@ -24,7 +25,6 @@ void InitIsStdoutATerminal() {
|
||||
|
||||
bool IsStdoutATerminal() { return s_isStdoutATerminal; }
|
||||
|
||||
|
||||
#define ANSI_RESET "\033[0m"
|
||||
#define ANSI_BOLD "\033[1m"
|
||||
#define ANSI_BLACK "\033[30m"
|
||||
@ -40,9 +40,10 @@ bool IsStdoutATerminal() { return s_isStdoutATerminal; }
|
||||
// Like printf, but if stdout is a terminal, prepends the output with
|
||||
// the given `ansiEscape` and appends ANSI_RESET.
|
||||
#ifdef __GNUC__
|
||||
[[gnu::format(__printf__, 2, 3)]]
|
||||
[[gnu::format( __printf__, 2, 3 )]]
|
||||
#endif
|
||||
void AnsiPrintf( const char* ansiEscape, const char* format, ... ) {
|
||||
void AnsiPrintf( const char* ansiEscape, const char* format, ... )
|
||||
{
|
||||
if( IsStdoutATerminal() )
|
||||
{
|
||||
// Prepend ansiEscape and append ANSI_RESET.
|
||||
@ -65,27 +66,30 @@ void AnsiPrintf( const char* ansiEscape, const char* format, ... ) {
|
||||
|
||||
// Check handshake status
|
||||
// If failure, printf helpful message and return non-zero
|
||||
int checkHandshake(tracy::HandshakeStatus handshake)
|
||||
int checkHandshake( tracy::HandshakeStatus handshake )
|
||||
{
|
||||
if( handshake == tracy::HandshakeProtocolMismatch )
|
||||
{
|
||||
printf( "\nThe client you are trying to connect to uses incompatible protocol version.\nMake sure you are using the same Tracy version on both client and server.\n" );
|
||||
printf(
|
||||
"\nThe client you are trying to connect to uses incompatible protocol version.\nMake sure you are using the same Tracy version on both client and server.\n" );
|
||||
return 1;
|
||||
}
|
||||
if( handshake == tracy::HandshakeNotAvailable )
|
||||
{
|
||||
printf( "\nThe client you are trying to connect to is no longer able to sent profiling data,\nbecause another server was already connected to it.\nYou can do the following:\n\n 1. Restart the client application.\n 2. Rebuild the client application with on-demand mode enabled.\n" );
|
||||
printf(
|
||||
"\nThe client you are trying to connect to is no longer able to sent profiling data,\nbecause another server was already connected to it.\nYou can do the following:\n\n 1. Restart the client application.\n 2. Rebuild the client application with on-demand mode enabled.\n" );
|
||||
return 2;
|
||||
}
|
||||
if( handshake == tracy::HandshakeDropped )
|
||||
{
|
||||
printf( "\nThe client you are trying to connect to has disconnected during the initial\nconnection handshake. Please check your network configuration.\n" );
|
||||
printf(
|
||||
"\nThe client you are trying to connect to has disconnected during the initial\nconnection handshake. Please check your network configuration.\n" );
|
||||
return 3;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void printCurrentMemoryUsage(int64_t memoryLimit)
|
||||
void printCurrentMemoryUsage( int64_t memoryLimit )
|
||||
{
|
||||
AnsiPrintf( ANSI_RED ANSI_BOLD, "%s", tracy::MemSizeToString( tracy::memUsage.load( std::memory_order_relaxed ) ) );
|
||||
if( memoryLimit > 0 )
|
||||
@ -95,7 +99,7 @@ void printCurrentMemoryUsage(int64_t memoryLimit)
|
||||
}
|
||||
}
|
||||
|
||||
void printWorkerUpdate(tracy::Worker& worker, int64_t memoryLimit, bool erase, bool memoryUsage)
|
||||
void printWorkerUpdate( tracy::Worker& worker, int64_t memoryLimit, bool erase, bool memoryUsage )
|
||||
{
|
||||
auto& lock = worker.GetMbpsDataLock();
|
||||
lock.lock();
|
||||
@ -111,30 +115,30 @@ void printWorkerUpdate(tracy::Worker& worker, int64_t memoryLimit, bool erase, b
|
||||
unit = "Kbps";
|
||||
unitsPerMbps = 1000.f;
|
||||
}
|
||||
if(erase)
|
||||
if( erase )
|
||||
{
|
||||
AnsiPrintf(ANSI_ERASE_LINE, "\r");
|
||||
AnsiPrintf( ANSI_ERASE_LINE, "\r" );
|
||||
}
|
||||
AnsiPrintf( ANSI_CYAN ANSI_BOLD, "%7.2f %s", mbps * unitsPerMbps, unit );
|
||||
printf( " /");
|
||||
printf( " /" );
|
||||
AnsiPrintf( ANSI_CYAN ANSI_BOLD, "%5.1f%%", compRatio * 100.f );
|
||||
printf( " =");
|
||||
printf( " =" );
|
||||
AnsiPrintf( ANSI_YELLOW ANSI_BOLD, "%7.2f Mbps", mbps / compRatio );
|
||||
printf( " | ");
|
||||
AnsiPrintf( ANSI_YELLOW, "Tx: ");
|
||||
printf( " | " );
|
||||
AnsiPrintf( ANSI_YELLOW, "Tx: " );
|
||||
AnsiPrintf( ANSI_GREEN, "%s", tracy::MemSizeToString( netTotal ) );
|
||||
if (memoryUsage)
|
||||
if( memoryUsage )
|
||||
{
|
||||
printf( " | ");
|
||||
printCurrentMemoryUsage(memoryLimit);
|
||||
printf( " | " );
|
||||
printCurrentMemoryUsage( memoryLimit );
|
||||
}
|
||||
|
||||
printf( " | ");
|
||||
printf( " | " );
|
||||
AnsiPrintf( ANSI_RED, "%s", tracy::TimeToString( worker.GetLastTime() - worker.GetFirstTime() ) );
|
||||
fflush( stdout );
|
||||
}
|
||||
|
||||
bool printWorkerFailure(tracy::Worker& worker, char const* prefix)
|
||||
bool printWorkerFailure( tracy::Worker& worker, char const* prefix )
|
||||
{
|
||||
auto const& failure = worker.GetFailureType();
|
||||
if( failure == tracy::Worker::Failure::None )
|
||||
@ -143,7 +147,8 @@ bool printWorkerFailure(tracy::Worker& worker, char const* prefix)
|
||||
}
|
||||
else
|
||||
{
|
||||
AnsiPrintf( ANSI_RED ANSI_BOLD, "\n%s Instrumentation failure: %s", prefix, tracy::Worker::GetFailureString( failure ) );
|
||||
AnsiPrintf( ANSI_RED ANSI_BOLD, "\n%s Instrumentation failure: %s", prefix,
|
||||
tracy::Worker::GetFailureString( failure ) );
|
||||
auto& fd = worker.GetFailureData();
|
||||
if( !fd.message.empty() )
|
||||
{
|
||||
@ -164,12 +169,12 @@ bool printWorkerFailure(tracy::Worker& worker, char const* prefix)
|
||||
else
|
||||
{
|
||||
const auto fsz = frameData->size;
|
||||
for( uint8_t f=0; f<fsz; f++ )
|
||||
for( uint8_t f = 0; f < fsz; f++ )
|
||||
{
|
||||
const auto& frame = frameData->data[f];
|
||||
auto txt = worker.GetString( frame.name );
|
||||
|
||||
if( fidx == 0 && f != fsz-1 )
|
||||
if( fidx == 0 && f != fsz - 1 )
|
||||
{
|
||||
auto test = tracy::s_tracyStackFrames;
|
||||
bool match = false;
|
||||
@ -180,12 +185,11 @@ bool printWorkerFailure(tracy::Worker& worker, char const* prefix)
|
||||
match = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
while( *++test );
|
||||
} while( *++test );
|
||||
if( match ) continue;
|
||||
}
|
||||
|
||||
if( f == fsz-1 )
|
||||
if( f == fsz - 1 )
|
||||
{
|
||||
printf( "%3i. ", fidx++ );
|
||||
}
|
||||
|
@ -5,103 +5,103 @@
|
||||
|
||||
namespace tracy
|
||||
{
|
||||
std::optional<tracy::BroadcastMessage> ParseBroadcastMessage(const char* msg, size_t msgLen)
|
||||
std::optional<tracy::BroadcastMessage> ParseBroadcastMessage( const char* msg, size_t msgLen )
|
||||
{
|
||||
if (msgLen < sizeof(uint16_t))
|
||||
if( msgLen < sizeof( uint16_t ) )
|
||||
{
|
||||
std::cout << "Received too short broadcast message" << std::endl;
|
||||
return std::nullopt;
|
||||
}
|
||||
uint16_t broadcastVersion;
|
||||
memcpy(&broadcastVersion, msg, sizeof(uint16_t));
|
||||
if (broadcastVersion > tracy::BroadcastVersion)
|
||||
memcpy( &broadcastVersion, msg, sizeof( uint16_t ) );
|
||||
if( broadcastVersion > tracy::BroadcastVersion )
|
||||
{
|
||||
std::cout << "Received broadcast message with unsupported version: " << broadcastVersion << std::endl;
|
||||
return std::nullopt;
|
||||
}
|
||||
switch (broadcastVersion)
|
||||
switch( broadcastVersion )
|
||||
{
|
||||
case 3:
|
||||
case 3:
|
||||
{
|
||||
if( msgLen > sizeof( tracy::BroadcastMessage ) )
|
||||
{
|
||||
if (msgLen > sizeof(tracy::BroadcastMessage))
|
||||
{
|
||||
std::cout << "Received unexpected size broadcast v3 message" << std::endl;
|
||||
return std::nullopt;
|
||||
}
|
||||
tracy::BroadcastMessage bm;
|
||||
memcpy(&bm, msg, msgLen);
|
||||
return bm;
|
||||
break;
|
||||
std::cout << "Received unexpected size broadcast v3 message" << std::endl;
|
||||
return std::nullopt;
|
||||
}
|
||||
case 2:
|
||||
tracy::BroadcastMessage bm;
|
||||
memcpy( &bm, msg, msgLen );
|
||||
return bm;
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if( msgLen > sizeof( tracy::BroadcastMessage_v2 ) )
|
||||
{
|
||||
if (msgLen > sizeof(tracy::BroadcastMessage_v2))
|
||||
{
|
||||
std::cout << "Received unexpected size broadcast v2 message" << std::endl;
|
||||
return std::nullopt;
|
||||
}
|
||||
tracy::BroadcastMessage_v2 bm;
|
||||
memcpy(&bm, msg, msgLen);
|
||||
std::cout << "Received unexpected size broadcast v2 message" << std::endl;
|
||||
return std::nullopt;
|
||||
}
|
||||
tracy::BroadcastMessage_v2 bm;
|
||||
memcpy( &bm, msg, msgLen );
|
||||
|
||||
tracy::BroadcastMessage out;
|
||||
out.broadcastVersion = broadcastVersion;
|
||||
out.protocolVersion = bm.protocolVersion;
|
||||
out.activeTime = bm.activeTime;
|
||||
out.listenPort = bm.listenPort;
|
||||
strcpy(out.programName, bm.programName);
|
||||
out.pid = 0;
|
||||
return out;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
tracy::BroadcastMessage out;
|
||||
out.broadcastVersion = broadcastVersion;
|
||||
out.protocolVersion = bm.protocolVersion;
|
||||
out.activeTime = bm.activeTime;
|
||||
out.listenPort = bm.listenPort;
|
||||
strcpy( out.programName, bm.programName );
|
||||
out.pid = 0;
|
||||
return out;
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
if( msgLen > sizeof( tracy::BroadcastMessage_v1 ) )
|
||||
{
|
||||
if (msgLen > sizeof(tracy::BroadcastMessage_v1))
|
||||
{
|
||||
std::cout << "Received unexpected size broadcast v1 message" << std::endl;
|
||||
return std::nullopt;
|
||||
}
|
||||
tracy::BroadcastMessage_v1 bm;
|
||||
memcpy(&bm, msg, msgLen);
|
||||
|
||||
tracy::BroadcastMessage out;
|
||||
out.broadcastVersion = broadcastVersion;
|
||||
out.protocolVersion = bm.protocolVersion;
|
||||
out.activeTime = bm.activeTime;
|
||||
out.listenPort = bm.listenPort;
|
||||
strcpy(out.programName, bm.programName);
|
||||
out.pid = 0;
|
||||
return out;
|
||||
break;
|
||||
std::cout << "Received unexpected size broadcast v1 message" << std::endl;
|
||||
return std::nullopt;
|
||||
}
|
||||
case 0:
|
||||
tracy::BroadcastMessage_v1 bm;
|
||||
memcpy( &bm, msg, msgLen );
|
||||
|
||||
tracy::BroadcastMessage out;
|
||||
out.broadcastVersion = broadcastVersion;
|
||||
out.protocolVersion = bm.protocolVersion;
|
||||
out.activeTime = bm.activeTime;
|
||||
out.listenPort = bm.listenPort;
|
||||
strcpy( out.programName, bm.programName );
|
||||
out.pid = 0;
|
||||
return out;
|
||||
break;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
if( msgLen > sizeof( tracy::BroadcastMessage_v0 ) )
|
||||
{
|
||||
if (msgLen > sizeof(tracy::BroadcastMessage_v0))
|
||||
{
|
||||
std::cout << "Received unexpected size broadcast v0 message" << std::endl;
|
||||
return std::nullopt;
|
||||
}
|
||||
tracy::BroadcastMessage_v0 bm;
|
||||
memcpy(&bm, msg, msgLen);
|
||||
|
||||
tracy::BroadcastMessage out;
|
||||
out.broadcastVersion = broadcastVersion;
|
||||
out.protocolVersion = bm.protocolVersion;
|
||||
out.activeTime = bm.activeTime;
|
||||
out.listenPort = tracy::DEFAULT_CLIENT_DATA_TCP_PORT;
|
||||
strcpy(out.programName, bm.programName);
|
||||
out.pid = 0;
|
||||
return out;
|
||||
break;
|
||||
std::cout << "Received unexpected size broadcast v0 message" << std::endl;
|
||||
return std::nullopt;
|
||||
}
|
||||
default:
|
||||
assert(false);
|
||||
break;
|
||||
tracy::BroadcastMessage_v0 bm;
|
||||
memcpy( &bm, msg, msgLen );
|
||||
|
||||
tracy::BroadcastMessage out;
|
||||
out.broadcastVersion = broadcastVersion;
|
||||
out.protocolVersion = bm.protocolVersion;
|
||||
out.activeTime = bm.activeTime;
|
||||
out.listenPort = tracy::DEFAULT_CLIENT_DATA_TCP_PORT;
|
||||
strcpy( out.programName, bm.programName );
|
||||
out.pid = 0;
|
||||
return out;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
assert( false );
|
||||
break;
|
||||
}
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
uint64_t ClientUniqueID(tracy::IpAddress const& addr, uint16_t port)
|
||||
uint64_t ClientUniqueID( tracy::IpAddress const& addr, uint16_t port )
|
||||
{
|
||||
return uint64_t(addr.GetNumber()) | (uint64_t(port) << 32);
|
||||
return uint64_t( addr.GetNumber() ) | ( uint64_t( port ) << 32 );
|
||||
}
|
||||
}
|
||||
|
@ -2,16 +2,16 @@
|
||||
#ifndef __TRACYPROTOCOLSERVER_HPP__
|
||||
#define __TRACYPROTOCOLSERVER_HPP__
|
||||
|
||||
#include <optional>
|
||||
#include "TracyProtocol.hpp"
|
||||
#include "TracySocket.hpp"
|
||||
#include <optional>
|
||||
|
||||
namespace tracy
|
||||
{
|
||||
// create the latest version of broadcast message, migrating older versions if possible
|
||||
std::optional<tracy::BroadcastMessage> ParseBroadcastMessage(const char* msg, size_t msgLen);
|
||||
std::optional<tracy::BroadcastMessage> ParseBroadcastMessage( const char* msg, size_t msgLen );
|
||||
// internal unique ID for a client
|
||||
uint64_t ClientUniqueID(tracy::IpAddress const& addr, uint16_t port);
|
||||
uint64_t ClientUniqueID( tracy::IpAddress const& addr, uint16_t port );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user