refactoring

This commit is contained in:
2026-09-01 09:31:49 +02:00
parent b3a5a0b345
commit a5a53b7efc
20 changed files with 2082 additions and 1032 deletions
+9 -7
View File
@@ -47,9 +47,9 @@ flowchart TB
Audio[racket-audio<br/>local backend]
Discovery[racket-upnp + racket-sonos<br/>device discovery]
DLNA[racket-audio-dlna<br/>transport, seeking and media publication]
AgentGUI[private/player-agent-gui.rkt<br/>GUI adapter]
AgentGUI[private-player-agent/player-agent-gui.rkt<br/>GUI adapter]
AgentCLI[player-agent-cli.rkt<br/>CLI adapter]
AgentCore[private/player-agent-core.rkt<br/>polling and audio runtime]
AgentCore[private-player-agent/player-agent-core.rkt<br/>polling and audio runtime]
Main --> Server
Main --> Player
@@ -254,7 +254,8 @@ Italian, Swedish, Norwegian, Finnish and Icelandic with English fallback.
Browser preferences select the initial language; a
manual selection is stored server-side per username and therefore follows the
user across browsers. The native agent uses the equivalent
[`private/translate.rkt`](private/translate.rkt) module and the operating-system
[`private-player-agent/player-agent-translate.rkt`](private-player-agent/player-agent-translate.rkt)
module and the operating-system
language.
DOM signatures prevent rebuilding unchanged library, tab, and playlist
@@ -342,10 +343,11 @@ generally performed outside it, with their results committed in short locked
sections. Audio callbacks use only the short-lived state lock and update the
playback session captured when their backend was created.
The server module stores the player in a module-level `current-player` variable.
This matches the intended one-player-per-process deployment, but it prevents
multiple independent player instances from being served safely within the same
Racket process.
The server module creates one request-dispatcher closure for each `serve-player`
call. That closure captures its player and authentication manager and binds them
to every HTTP handler. No player or authentication state is stored in module
variables, so independent server instances do not overwrite each other's
context within the same Racket process.
## 6. Configuration and deployment