| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- #ifndef __TRACYPROTOCOL_HPP__
- #define __TRACYPROTOCOL_HPP__
- #include <limits>
- #include <stdint.h>
- namespace tracy
- {
- constexpr unsigned Lz4CompressBound( unsigned isize ) { return isize + ( isize / 255 ) + 16; }
- enum : uint32_t { ProtocolVersion = 46 };
- enum : uint16_t { BroadcastVersion = 2 };
- using lz4sz_t = uint32_t;
- enum { TargetFrameSize = 256 * 1024 };
- enum { LZ4Size = Lz4CompressBound( TargetFrameSize ) };
- static_assert( LZ4Size <= std::numeric_limits<lz4sz_t>::max(), "LZ4Size greater than lz4sz_t" );
- static_assert( TargetFrameSize * 2 >= 64 * 1024, "Not enough space for LZ4 stream buffer" );
- enum { HandshakeShibbolethSize = 8 };
- static const char HandshakeShibboleth[HandshakeShibbolethSize] = { 'T', 'r', 'a', 'c', 'y', 'P', 'r', 'f' };
- enum HandshakeStatus : uint8_t
- {
- HandshakePending,
- HandshakeWelcome,
- HandshakeProtocolMismatch,
- HandshakeNotAvailable,
- HandshakeDropped
- };
- enum { WelcomeMessageProgramNameSize = 64 };
- enum { WelcomeMessageHostInfoSize = 1024 };
- #pragma pack( 1 )
- // Must increase left query space after handling!
- enum ServerQuery : uint8_t
- {
- ServerQueryTerminate,
- ServerQueryString,
- ServerQueryThreadString,
- ServerQuerySourceLocation,
- ServerQueryPlotName,
- ServerQueryCallstackFrame,
- ServerQueryFrameName,
- ServerQueryDisconnect,
- ServerQueryExternalName,
- ServerQueryParameter,
- ServerQuerySymbol,
- ServerQuerySymbolCode,
- ServerQueryCodeLocation,
- ServerQuerySourceCode,
- ServerQueryDataTransfer,
- ServerQueryDataTransferPart
- };
- struct ServerQueryPacket
- {
- ServerQuery type;
- uint64_t ptr;
- uint32_t extra;
- };
- enum { ServerQueryPacketSize = sizeof( ServerQueryPacket ) };
- enum CpuArchitecture : uint8_t
- {
- CpuArchUnknown,
- CpuArchX86,
- CpuArchX64,
- CpuArchArm32,
- CpuArchArm64
- };
- struct WelcomeMessage
- {
- double timerMul;
- int64_t initBegin;
- int64_t initEnd;
- uint64_t delay;
- uint64_t resolution;
- uint64_t epoch;
- uint64_t exectime;
- uint64_t pid;
- int64_t samplingPeriod;
- uint8_t onDemand;
- uint8_t isApple;
- uint8_t cpuArch;
- uint8_t codeTransfer;
- char cpuManufacturer[12];
- uint32_t cpuId;
- char programName[WelcomeMessageProgramNameSize];
- char hostInfo[WelcomeMessageHostInfoSize];
- };
- enum { WelcomeMessageSize = sizeof( WelcomeMessage ) };
- struct OnDemandPayloadMessage
- {
- uint64_t frames;
- uint64_t currentTime;
- };
- enum { OnDemandPayloadMessageSize = sizeof( OnDemandPayloadMessage ) };
- struct BroadcastMessage
- {
- uint16_t broadcastVersion;
- uint16_t listenPort;
- uint32_t protocolVersion;
- int32_t activeTime; // in seconds
- char programName[WelcomeMessageProgramNameSize];
- };
- enum { BroadcastMessageSize = sizeof( BroadcastMessage ) };
- #pragma pack()
- }
- #endif
|