generation-aware playlist readiness

This commit is contained in:
Dmitry Sergeev
2026-09-01 20:05:00 +03:00
parent b160e3aba2
commit 532e03ffca
4 changed files with 349 additions and 0 deletions
+24
View File
@@ -8,6 +8,19 @@ type StatusStore struct {
statuses map[Unit]Status
}
type PlaybackStatusSnapshot struct {
Generation uint64
Video Status
HasVideo bool
Audio Status
HasAudio bool
Sync Status
HasSync bool
}
func NewStatusStore() *StatusStore {
return &StatusStore{
statuses: make(map[Unit]Status),
@@ -34,6 +47,17 @@ func (s *StatusStore) Snapshot(unit Unit) (Status, bool) {
return status, ok
}
func (s *StatusStore) SnapshotAll() PlaybackStatusSnapshot {
s.mu.RLock()
defer s.mu.RUnlock()
snapshot := PlaybackStatusSnapshot{Generation: s.generation}
snapshot.Video, snapshot.HasVideo = s.statuses[UnitVideo]
snapshot.Audio, snapshot.HasAudio = s.statuses[UnitAudio]
snapshot.Sync, snapshot.HasSync = s.statuses[UnitSync]
return snapshot
}
func (s *StatusStore) Clear(unit Unit) {
s.mu.Lock()
delete(s.statuses, unit)