add thread-safe playback status store

This commit is contained in:
Dmitry Sergeev
2026-08-27 23:23:10 +03:00
parent 1571e2700c
commit 9df21828e9
3 changed files with 143 additions and 2 deletions
+33
View File
@@ -0,0 +1,33 @@
package playback
import "sync"
type StatusStore struct {
mu sync.RWMutex
statuses map[Unit]Status
}
func NewStatusStore() *StatusStore {
return &StatusStore{
statuses: make(map[Unit]Status),
}
}
func (s *StatusStore) Observe(status Status) {
s.mu.Lock()
s.statuses[status.Unit] = status
s.mu.Unlock()
}
func (s *StatusStore) Snapshot(unit Unit) (Status, bool) {
s.mu.RLock()
status, ok := s.statuses[unit]
s.mu.RUnlock()
return status, ok
}
func (s *StatusStore) Clear(unit Unit) {
s.mu.Lock()
delete(s.statuses, unit)
s.mu.Unlock()
}