Add configurable media-aware managed session reaping

This commit is contained in:
2026-09-15 22:58:16 +02:00
parent 05eacb3092
commit 274b85025c
14 changed files with 291 additions and 32 deletions
+19 -1
View File
@@ -10,6 +10,24 @@ up instantly. Newest status at the top.
## ▶ Where we left off / next action
- **Done (2026-09-15): Managed media-aware reaper.** Voice checkpoint committed as
`05eacb3`. Added `VoiceServerOptions` (name/guests/capacity, handshake deadline,
idle timeout and sweep interval), preserving the previous constructor overload.
Default expiry/sweep are 45 s / 15 s; zero idle timeout disables reaping. Parsed TCP
envelopes, authenticated owned-stream voice and exact bound-endpoint UDP keepalives
refresh one monotonic session timestamp. Invalid media does not refresh it. Removed
the independent 60-second TCP-only timeout so media-active sessions remain connected.
Reaping sends a fatal disconnect and retires presence/media routing with one LEFT
event. Shutdown awaits active control/media/reaper loops and unfinished handshakes.
Tests inject `TimeProvider` timestamps to verify TCP/UDP activity, rejected media,
single departure events, disabled reaping and shutdown. **Verified:** 160/160 managed
tests with all native conformance enabled; managed Release build has zero warnings;
native dev build and 29/29 CTest tests green; `git diff --check` passes.
**Next:** protected channel joins and channel CRUD, permissions/moderation/account
administration, then production configuration/publishing. Phase 4 remains in progress.
Follow with audio/core/managed CLI, switch Windows to the managed library, then C#
AppKit/UIKit clients. Keep the Swift broadcast extension and frozen shared-ring boundary.
- **Done (2026-09-15): Phase 4 encrypted voice checkpoint.** Existing pending codec/DSP
and initial server work committed as `4067bab`. Managed server now binds UDP on the
TCP port number, issues 16-byte session tokens, supports subscription and multi-stream
@@ -136,7 +154,7 @@ dotnet test dotnet/VoiceCat.slnx -c Release --no-restore
./dotnet/check-licenses.ps1
```
Last results: **154/154 managed tests, no skips with those variables set; 29/29 native
Last results: **160/160 managed tests, no skips with those variables set; 29/29 native
CTest tests; warning-free Release build; 22 package licenses approved; locked restore
and `git diff --check` passed.** Without the variables, native interoperability tests
skip; that is not equivalent verification. Desktop CI stages codec/DSP bindings on