forked from QUIC-Tracker/quic-tracker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.go
More file actions
34 lines (29 loc) · 668 Bytes
/
utils.go
File metadata and controls
34 lines (29 loc) · 668 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package quictracker
import "github.com/dustin/go-broadcast"
type Broadcaster struct {
broadcast.Broadcaster
channels []chan interface{}
isClosed bool
}
func NewBroadcaster(buflen int) Broadcaster {
return Broadcaster{Broadcaster: broadcast.NewBroadcaster(buflen)}
}
func (b *Broadcaster) RegisterNewChan(size int) chan interface{} {
c := make(chan interface{}, size)
b.channels = append(b.channels, c)
b.Register(c)
return c
}
func (b *Broadcaster) Close() error {
if b.isClosed {
return nil
}
b.isClosed = true
for _, c := range b.channels {
close(c)
}
return b.Broadcaster.Close()
}
func (b *Broadcaster) IsClosed() bool {
return b.isClosed
}