mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-22 14:44:34 +00:00
Allow specifying network port in server.
This commit is contained in:
parent
fb63dd89bc
commit
82cd667b30
@ -30,7 +30,7 @@ void SigInt( int )
|
|||||||
|
|
||||||
void Usage()
|
void Usage()
|
||||||
{
|
{
|
||||||
printf( "Usage: capture -a address -o output.tracy\n" );
|
printf( "Usage: capture -a address -o output.tracy [-p port]\n" );
|
||||||
exit( 1 );
|
exit( 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,9 +46,10 @@ int main( int argc, char** argv )
|
|||||||
|
|
||||||
const char* address = nullptr;
|
const char* address = nullptr;
|
||||||
const char* output = nullptr;
|
const char* output = nullptr;
|
||||||
|
int port = 8086;
|
||||||
|
|
||||||
int c;
|
int c;
|
||||||
while( ( c = getopt( argc, argv, "a:o:" ) ) != -1 )
|
while( ( c = getopt( argc, argv, "a:o:p:" ) ) != -1 )
|
||||||
{
|
{
|
||||||
switch( c )
|
switch( c )
|
||||||
{
|
{
|
||||||
@ -58,6 +59,9 @@ int main( int argc, char** argv )
|
|||||||
case 'o':
|
case 'o':
|
||||||
output = optarg;
|
output = optarg;
|
||||||
break;
|
break;
|
||||||
|
case 'p':
|
||||||
|
port = atoi( optarg );
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
Usage();
|
Usage();
|
||||||
break;
|
break;
|
||||||
@ -66,9 +70,9 @@ int main( int argc, char** argv )
|
|||||||
|
|
||||||
if( !address || !output ) Usage();
|
if( !address || !output ) Usage();
|
||||||
|
|
||||||
printf( "Connecting to %s...", address );
|
printf( "Connecting to %s:%i...", address, port );
|
||||||
fflush( stdout );
|
fflush( stdout );
|
||||||
tracy::Worker worker( address );
|
tracy::Worker worker( address, port );
|
||||||
while( !worker.IsConnected() )
|
while( !worker.IsConnected() )
|
||||||
{
|
{
|
||||||
const auto handshake = worker.GetHandshakeStatus();
|
const auto handshake = worker.GetHandshakeStatus();
|
||||||
|
@ -86,7 +86,7 @@ Socket::~Socket()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Socket::Connect( const char* addr, const char* port )
|
bool Socket::Connect( const char* addr, int port )
|
||||||
{
|
{
|
||||||
assert( m_sock == -1 );
|
assert( m_sock == -1 );
|
||||||
|
|
||||||
@ -97,7 +97,10 @@ bool Socket::Connect( const char* addr, const char* port )
|
|||||||
hints.ai_family = AF_UNSPEC;
|
hints.ai_family = AF_UNSPEC;
|
||||||
hints.ai_socktype = SOCK_STREAM;
|
hints.ai_socktype = SOCK_STREAM;
|
||||||
|
|
||||||
if( getaddrinfo( addr, port, &hints, &res ) != 0 ) return false;
|
char portbuf[32];
|
||||||
|
sprintf( portbuf, "%i", port );
|
||||||
|
|
||||||
|
if( getaddrinfo( addr, portbuf, &hints, &res ) != 0 ) return false;
|
||||||
int sock = 0;
|
int sock = 0;
|
||||||
for( ptr = res; ptr; ptr = ptr->ai_next )
|
for( ptr = res; ptr; ptr = ptr->ai_next )
|
||||||
{
|
{
|
||||||
|
@ -21,7 +21,7 @@ public:
|
|||||||
Socket( int sock );
|
Socket( int sock );
|
||||||
~Socket();
|
~Socket();
|
||||||
|
|
||||||
bool Connect( const char* addr, const char* port );
|
bool Connect( const char* addr, int port );
|
||||||
void Close();
|
void Close();
|
||||||
|
|
||||||
int Send( const void* buf, int len );
|
int Send( const void* buf, int len );
|
||||||
|
@ -8,8 +8,9 @@
|
|||||||
|
|
||||||
#include "ResolvService.hpp"
|
#include "ResolvService.hpp"
|
||||||
|
|
||||||
ResolvService::ResolvService()
|
ResolvService::ResolvService( int port )
|
||||||
: m_exit( false )
|
: m_exit( false )
|
||||||
|
, m_port( port )
|
||||||
, m_thread( [this] { Worker(); } )
|
, m_thread( [this] { Worker(); } )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -32,7 +33,7 @@ void ResolvService::Worker()
|
|||||||
{
|
{
|
||||||
struct sockaddr_in addr = {};
|
struct sockaddr_in addr = {};
|
||||||
addr.sin_family = AF_INET;
|
addr.sin_family = AF_INET;
|
||||||
addr.sin_port = 8086;
|
addr.sin_port = m_port;
|
||||||
|
|
||||||
char buf[128];
|
char buf[128];
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ class ResolvService
|
|||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ResolvService();
|
ResolvService( int port );
|
||||||
~ResolvService();
|
~ResolvService();
|
||||||
|
|
||||||
void Query( uint32_t ip, const std::function<void(std::string&&)>& callback );
|
void Query( uint32_t ip, const std::function<void(std::string&&)>& callback );
|
||||||
@ -31,6 +31,7 @@ private:
|
|||||||
std::mutex m_lock;
|
std::mutex m_lock;
|
||||||
std::condition_variable m_cv;
|
std::condition_variable m_cv;
|
||||||
std::vector<QueueItem> m_queue;
|
std::vector<QueueItem> m_queue;
|
||||||
|
int m_port;
|
||||||
std::thread m_thread;
|
std::thread m_thread;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -104,6 +104,9 @@ int main( int argc, char** argv )
|
|||||||
std::unique_ptr<tracy::View> view;
|
std::unique_ptr<tracy::View> view;
|
||||||
tracy::BadVersionState badVer;
|
tracy::BadVersionState badVer;
|
||||||
|
|
||||||
|
int port = 8086;
|
||||||
|
const char* connectTo = nullptr;
|
||||||
|
|
||||||
if( argc == 2 )
|
if( argc == 2 )
|
||||||
{
|
{
|
||||||
auto f = std::unique_ptr<tracy::FileRead>( tracy::FileRead::Open( argv[1] ) );
|
auto f = std::unique_ptr<tracy::FileRead>( tracy::FileRead::Open( argv[1] ) );
|
||||||
@ -112,9 +115,30 @@ int main( int argc, char** argv )
|
|||||||
view = std::make_unique<tracy::View>( *f );
|
view = std::make_unique<tracy::View>( *f );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( argc == 3 && strcmp( argv[1], "-a" ) == 0 )
|
else
|
||||||
{
|
{
|
||||||
view = std::make_unique<tracy::View>( argv[2] );
|
while( argc >= 3 )
|
||||||
|
{
|
||||||
|
if( strcmp( argv[1], "-a" ) == 0 )
|
||||||
|
{
|
||||||
|
connectTo = argv[2];
|
||||||
|
}
|
||||||
|
else if( strcmp( argv[1], "-p" ) == 0 )
|
||||||
|
{
|
||||||
|
port = atoi( argv[2] );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf( stderr, "Bad parameter: %s", argv[1] );
|
||||||
|
exit( 1 );
|
||||||
|
}
|
||||||
|
argc -= 2;
|
||||||
|
argv += 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if( connectTo )
|
||||||
|
{
|
||||||
|
view = std::make_unique<tracy::View>( connectTo, port );
|
||||||
}
|
}
|
||||||
|
|
||||||
char title[128];
|
char title[128];
|
||||||
@ -261,7 +285,7 @@ int main( int argc, char** argv )
|
|||||||
|
|
||||||
std::mutex resolvLock;
|
std::mutex resolvLock;
|
||||||
tracy::flat_hash_map<std::string, std::string> resolvMap;
|
tracy::flat_hash_map<std::string, std::string> resolvMap;
|
||||||
ResolvService resolv;
|
ResolvService resolv( port );
|
||||||
|
|
||||||
glfwShowWindow( window );
|
glfwShowWindow( window );
|
||||||
|
|
||||||
@ -296,7 +320,7 @@ int main( int argc, char** argv )
|
|||||||
if( !broadcastListen )
|
if( !broadcastListen )
|
||||||
{
|
{
|
||||||
broadcastListen = std::make_unique<tracy::UdpListen>();
|
broadcastListen = std::make_unique<tracy::UdpListen>();
|
||||||
if( !broadcastListen->Listen( 8086 ) )
|
if( !broadcastListen->Listen( port ) )
|
||||||
{
|
{
|
||||||
broadcastListen.reset();
|
broadcastListen.reset();
|
||||||
}
|
}
|
||||||
@ -456,7 +480,7 @@ int main( int argc, char** argv )
|
|||||||
}
|
}
|
||||||
connHistVec = RebuildConnectionHistory( connHistMap );
|
connHistVec = RebuildConnectionHistory( connHistMap );
|
||||||
|
|
||||||
view = std::make_unique<tracy::View>( addr, fixedWidth, smallFont, bigFont, SetWindowTitleCallback );
|
view = std::make_unique<tracy::View>( addr, port, fixedWidth, smallFont, bigFont, SetWindowTitleCallback );
|
||||||
}
|
}
|
||||||
ImGui::SameLine( 0, ImGui::GetFontSize() * 2 );
|
ImGui::SameLine( 0, ImGui::GetFontSize() * 2 );
|
||||||
if( ImGui::Button( ICON_FA_FOLDER_OPEN " Open saved trace" ) && !loadThread.joinable() )
|
if( ImGui::Button( ICON_FA_FOLDER_OPEN " Open saved trace" ) && !loadThread.joinable() )
|
||||||
@ -527,7 +551,7 @@ int main( int argc, char** argv )
|
|||||||
if( badProto ) flags |= ImGuiSelectableFlags_Disabled;
|
if( badProto ) flags |= ImGuiSelectableFlags_Disabled;
|
||||||
if( ImGui::Selectable( name->second.c_str(), &sel, flags ) && !loadThread.joinable() )
|
if( ImGui::Selectable( name->second.c_str(), &sel, flags ) && !loadThread.joinable() )
|
||||||
{
|
{
|
||||||
view = std::make_unique<tracy::View>( v.second.address.c_str(), fixedWidth, smallFont, bigFont, SetWindowTitleCallback );
|
view = std::make_unique<tracy::View>( v.second.address.c_str(), port, fixedWidth, smallFont, bigFont, SetWindowTitleCallback );
|
||||||
}
|
}
|
||||||
ImGui::NextColumn();
|
ImGui::NextColumn();
|
||||||
const auto acttime = ( v.second.activeTime + ( time - v.second.time ) / 1000 ) * 1000000000ll;
|
const auto acttime = ( v.second.activeTime + ( time - v.second.time ) / 1000 ) * 1000000000ll;
|
||||||
|
@ -110,8 +110,8 @@ enum { MinFrameSize = 5 };
|
|||||||
|
|
||||||
static View* s_instance = nullptr;
|
static View* s_instance = nullptr;
|
||||||
|
|
||||||
View::View( const char* addr, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb )
|
View::View( const char* addr, int port, ImFont* fixedWidth, ImFont* smallFont, ImFont* bigFont, SetTitleCallback stcb )
|
||||||
: m_worker( addr )
|
: m_worker( addr, port )
|
||||||
, m_staticView( false )
|
, m_staticView( false )
|
||||||
, m_pause( false )
|
, m_pause( false )
|
||||||
, m_frames( nullptr )
|
, m_frames( nullptr )
|
||||||
|
@ -63,8 +63,8 @@ public:
|
|||||||
|
|
||||||
using SetTitleCallback = void(*)( const char* );
|
using SetTitleCallback = void(*)( const char* );
|
||||||
|
|
||||||
View( ImFont* fixedWidth = nullptr, ImFont* smallFont = nullptr, ImFont* bigFont = nullptr, SetTitleCallback stcb = nullptr ) : View( "127.0.0.1", fixedWidth, smallFont, bigFont, stcb ) {}
|
View( ImFont* fixedWidth = nullptr, ImFont* smallFont = nullptr, ImFont* bigFont = nullptr, SetTitleCallback stcb = nullptr ) : View( "127.0.0.1", 8086, fixedWidth, smallFont, bigFont, stcb ) {}
|
||||||
View( const char* addr, ImFont* fixedWidth = nullptr, ImFont* smallFont = nullptr, ImFont* bigFont = nullptr, SetTitleCallback stcb = nullptr );
|
View( const char* addr, int port, ImFont* fixedWidth = nullptr, ImFont* smallFont = nullptr, ImFont* bigFont = nullptr, SetTitleCallback stcb = nullptr );
|
||||||
View( FileRead& f, ImFont* fixedWidth = nullptr, ImFont* smallFont = nullptr, ImFont* bigFont = nullptr, SetTitleCallback stcb = nullptr );
|
View( FileRead& f, ImFont* fixedWidth = nullptr, ImFont* smallFont = nullptr, ImFont* bigFont = nullptr, SetTitleCallback stcb = nullptr );
|
||||||
~View();
|
~View();
|
||||||
|
|
||||||
|
@ -234,8 +234,9 @@ static tracy_force_inline void UpdateLockRange( LockMap& lockmap, const LockEven
|
|||||||
|
|
||||||
LoadProgress Worker::s_loadProgress;
|
LoadProgress Worker::s_loadProgress;
|
||||||
|
|
||||||
Worker::Worker( const char* addr )
|
Worker::Worker( const char* addr, int port )
|
||||||
: m_addr( addr )
|
: m_addr( addr )
|
||||||
|
, m_port( port )
|
||||||
, m_hasData( false )
|
, m_hasData( false )
|
||||||
, m_stream( LZ4_createStreamDecode() )
|
, m_stream( LZ4_createStreamDecode() )
|
||||||
, m_buffer( new char[TargetFrameSize*3 + 1] )
|
, m_buffer( new char[TargetFrameSize*3 + 1] )
|
||||||
@ -2125,7 +2126,7 @@ void Worker::Exec()
|
|||||||
for(;;)
|
for(;;)
|
||||||
{
|
{
|
||||||
if( m_shutdown.load( std::memory_order_relaxed ) ) return;
|
if( m_shutdown.load( std::memory_order_relaxed ) ) return;
|
||||||
if( m_sock.Connect( m_addr.c_str(), "8086" ) ) break;
|
if( m_sock.Connect( m_addr.c_str(), m_port ) ) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto lz4buf = std::make_unique<char[]>( LZ4Size );
|
auto lz4buf = std::make_unique<char[]>( LZ4Size );
|
||||||
|
@ -270,7 +270,7 @@ public:
|
|||||||
NUM_FAILURES
|
NUM_FAILURES
|
||||||
};
|
};
|
||||||
|
|
||||||
Worker( const char* addr );
|
Worker( const char* addr, int port );
|
||||||
Worker( FileRead& f, EventType::Type eventMask = EventType::All );
|
Worker( FileRead& f, EventType::Type eventMask = EventType::All );
|
||||||
~Worker();
|
~Worker();
|
||||||
|
|
||||||
@ -536,6 +536,7 @@ private:
|
|||||||
|
|
||||||
Socket m_sock;
|
Socket m_sock;
|
||||||
std::string m_addr;
|
std::string m_addr;
|
||||||
|
int m_port;
|
||||||
|
|
||||||
std::thread m_thread;
|
std::thread m_thread;
|
||||||
std::atomic<bool> m_connected { false };
|
std::atomic<bool> m_connected { false };
|
||||||
|
Loading…
Reference in New Issue
Block a user