123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // +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)
- }
|