xref: /unit/go/observable.go (revision 1323:6dfc9895e25e)
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