1/* 2 * Copyright (C) NGINX, Inc. 3 */ 4 5package unit 6 7import ( 8 "sync" 9) 10 11type observable struct { 12 sync.Mutex 13 observers []chan int 14} 15 16func (o *observable) attach(c chan int) { 17 o.Lock() 18 defer o.Unlock() 19 20 o.observers = append(o.observers, c) 21} 22 23func (o *observable) notify(e int) { 24 o.Lock() 25 defer o.Unlock() 26 27 for _, v := range o.observers { 28 v <- e 29 } 30 31 o.observers = nil 32} 33