branchrust_reboot/main/full_server_demoscancel

19 Commits over 0 Days - ∞cph!

Today
Merge from main -> full_server_demos
Yesterday
Don't record raknet packets used to establish a connection
Yesterday
Compile fix
Yesterday
Change default flush interval from 1 min -> 5 min
Yesterday
Store session start timestamp (when demo recording started) in header Use connection Guid instead of dictionary in player lookup (to avoid players reconnecting causing issues) - change DemoPlayerInfo.SteamId -> Guid (ulong technically) Change path to `server-demos/{serverid}/sessions/{sessionid}/{chunkid}.sdem` (to make it easier to navigate in azure) Fix compressedSize in demo header being incorrect (FileStream.Length > FileStream.Position)
Yesterday
Switch from `demo_server_id` -> `server_id` convar - save across restarts - set server_id on startup if not set Remove `upload_token` convar, rely on putting SAS token in upload endpoint for now (can polish later once we figure out how we want to refresh tokens) Fix hardcoded "test" container and use the container from the SAS url
Yesterday
Merge from main -> full_server_demos
Yesterday
Refactor into multiple .cs files as the code has grown
2 Days Ago
Delete demos off disk past a certain quota to avoid consuming entire disk during upload failure Add `server_demo_disk_space_gb` (default 30GB)
2 Days Ago
Allow server demos to be turned on and off at runtime
6 Days Ago
merge packet_ordering -> full_server_demos
6 Days Ago
Cleanup upload code a bit
8 Days Ago
Store chunkId in header file
8 Days Ago
Merge from main -> full_server_demos
9 Days Ago
Enqueue packets for demo from network threads instead of main thread
10 Days Ago
Change header class from fields -> properties (for System.Text.Json)
10 Days Ago
Merge upload -> full_server_demos
11 Days Ago
Expose variables for server demos as convar `full_server_demo` convar will only be applied on startup but can be changed at runtime to apply next restart
11 Days Ago
Moving from stash to branch* When `ServerDemo` convar is enabled on startup, the server will recordall network traffic on the server as one big demo file Packets sent to multiple players are only recorded once (store list of players sent to) Inbound & outbound data is stored in the order it was processed on the server The demo is written to disk on a separate thread to make performance impact minimal Demo is split into 1 minute chunks for testing (will be 5 minutes later) Each demo chunk is given a unique filename with the .sdem extension (represents .serverdemo) A json "header file" is written with each demo chunk wiht information on how the demo should be loaded (list of players, number of packets, time span, etc) Changed pooling of NetRead & NetWrite to use reference counting to account for another thread needing to finish processing before they are pooled