Implemented atomic session replacement.

This commit is contained in:
Dmitry Sergeev
2026-09-01 01:22:03 +03:00
parent e830da4a32
commit 047f334413
6 changed files with 108 additions and 27 deletions
+23 -22
View File
@@ -342,30 +342,31 @@ func main() {
videoActive = videoStr != ""
audioActive = audioStr != ""
if videoStr == "" {
enqueueCommand(playback.SessionCommand{Kind: playback.CommandRemoveVideo})
} else {
enqueueCommand(playback.SessionCommand{
Kind: playback.CommandSetVideo,
Config: playback.FeedConfig{
Domain: videoDomainStr,
UUID: videoStr,
Active: true,
},
})
videoConfig := playback.FeedConfig{}
if videoActive {
videoConfig = playback.FeedConfig{
Domain: videoDomainStr,
UUID: videoStr,
Active: true,
}
}
if audioStr == "" {
enqueueCommand(playback.SessionCommand{Kind: playback.CommandRemoveAudio})
} else {
enqueueCommand(playback.SessionCommand{
Kind: playback.CommandSetAudio,
Config: playback.FeedConfig{
Domain: audioDomainStr,
UUID: audioStr,
Active: true,
},
})
audioConfig := playback.FeedConfig{}
if audioActive {
audioConfig = playback.FeedConfig{
Domain: audioDomainStr,
UUID: audioStr,
Active: true,
}
}
enqueueCommand(playback.SessionCommand{
Kind: playback.CommandSetSession,
Session: playback.SessionConfig{
Video: videoConfig,
Audio: audioConfig,
SyncRequested: syncRequested,
},
})
}
playbackDone := make(chan error, 1)