generation-aware playlist readiness
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user