In extreme cases (for example user starting server + multiple local clients) all tracing at the exact time the number of command slots might be too small. Bump the number of sponsor command slots to 128 and add a retry in the process that adds commands.
#rb ionut.matasaru
[CL 30287932 by johan berg in ue5-main branch]
Adds new sponsor mode of running server. In this mode the server must be started with a parent pid. New pids can be added by running `unrealtraceserver fork --sponsor [pid]`. When all sponsor processes have exited and there are no active connections the server will exit. Most of the lifetime management logic is located in the new Lifetime type, but actual querying and exiting is done in the respective main functions.
Linux and Mac implementation was using a lock file to communicate running pid and version to other instances. With this change all platforms now use shared memory mapping techniques.
Command line options and command parsing has also been refactored and is now parsed and passed to all main functions. Command line help is also added.
#rb ionut.matasaru
[CL 30176867 by johan berg in ue5-main branch]
Prepare for future work by breaking out logging and instance info into separate files.
#rb ionut.matasaru
[CL 29987825 by johan berg in ue5-main branch]
Whenever settings would change we deleted the directory watches for all mounts. On Mac each watcher had a dispatch queue with running jobs. When the those lingering jobs would get callbacks, it would try to access the existing mount instance which would have been deleted.
#rb none
#jira UE-187849
[CL 27992508 by johan berg in ue5-main branch]
UTS was relying on standard library file times to get a common epoch based timestamp. However for Linux this does not seem to produce reliable results, so we fall back to the posix interface functions.
#rb martin.ridgers
#jira UE-191462
[CL 27784647 by johan berg in ue5-main branch]
On Windows keepalive options were set on the recording socket, in order to detect if a tracing process suddenly closes it's connection (it's killed or crashes). These options were missing from Mac and Linux configurations.
#rb martin.ridgers
#jira UE-188178
[CL 26343479 by johan berg in ue5-main branch]
* Parse Session guid and trace guid from metadata if available for live sessions
* Add api to fetch a session based on above guid.
#rb none
#preflight none
[CL 25505216 by Johan Berg in ue5-main branch]
Use entire path to calculate the id. Just using the stem hides files that happens to be present in multiple mounts.
#rb none
#preflight 6446e79ec632d1e89b5b6aef
[CL 25171227 by Johan Berg in ue5-main branch]
* Missed call to parent refresh
* Using incorrect platform define
#rb none
#preflight 6446891bf030f684d5d2f344
[CL 25163899 by Johan Berg in ue5-main branch]
In order to unify the build systems on all platforms add makefiles for xmake and deprecate nmake/gmake files. This allows us to use the same configuration files on all platforms and easily add support for using musl on Linux. Updated readme file to reflect the new system.
#rb martin.ridgers
#preflight 644137ef73470c177c0a75bf
[CL 25125978 by Johan Berg in ue5-main branch]