// +build !windows package libcontainerd import ( "sync" ) // pauseMonitor is helper to get notifications from pause state changes. type pauseMonitor struct { sync.Mutex waiters map[string][]chan struct{} } func (m *pauseMonitor) handle(t string) { m.Lock() defer m.Unlock() if m.waiters == nil { return } q, ok := m.waiters[t] if !ok { return } if len(q) > 0 { close(q[0]) m.waiters[t] = q[1:] } } func (m *pauseMonitor) append(t string, waiter chan struct{}) { m.Lock() defer m.Unlock() if m.waiters == nil { m.waiters = make(map[string][]chan struct{}) } _, ok := m.waiters[t] if !ok { m.waiters[t] = make([]chan struct{}, 0) } m.waiters[t] = append(m.waiters[t], waiter) }