github.com/sijibomii/docker@v0.0.0-20231230191044-5cf6ca554647/libcontainerd/pausemonitor_linux.go (about) 1 package libcontainerd 2 3 // pauseMonitor is helper to get notifications from pause state changes. 4 type pauseMonitor struct { 5 waiters map[string][]chan struct{} 6 } 7 8 func (m *pauseMonitor) handle(t string) { 9 if m.waiters == nil { 10 return 11 } 12 q, ok := m.waiters[t] 13 if !ok { 14 return 15 } 16 if len(q) > 0 { 17 close(q[0]) 18 m.waiters[t] = q[1:] 19 } 20 } 21 22 func (m *pauseMonitor) append(t string, waiter chan struct{}) { 23 if m.waiters == nil { 24 m.waiters = make(map[string][]chan struct{}) 25 } 26 _, ok := m.waiters[t] 27 if !ok { 28 m.waiters[t] = make([]chan struct{}, 0) 29 } 30 m.waiters[t] = append(m.waiters[t], waiter) 31 }