add thread-safe playback status store
This commit is contained in:
@@ -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()
|
||||
}
|
||||
Reference in New Issue
Block a user