mirror of
https://github.com/kataras/iris.git
synced 2026-01-06 03:27:27 +00:00
@@ -22,6 +22,9 @@ type Broker struct {
|
||||
|
||||
// listeners store.
|
||||
listeners map[LogChan]bool
|
||||
|
||||
// force-terminate all listeners.
|
||||
close chan struct{}
|
||||
}
|
||||
|
||||
// newBroker returns a new broker factory.
|
||||
@@ -31,6 +34,7 @@ func newBroker() *Broker {
|
||||
newListeners: make(chan LogChan),
|
||||
closingListeners: make(chan LogChan),
|
||||
listeners: make(map[LogChan]bool),
|
||||
close: make(chan struct{}),
|
||||
}
|
||||
|
||||
// Listens and Broadcasts events.
|
||||
@@ -58,6 +62,12 @@ func (b *Broker) run() {
|
||||
for clientMessageChan := range b.listeners {
|
||||
clientMessageChan <- log
|
||||
}
|
||||
|
||||
case <-b.close:
|
||||
for clientMessageChan := range b.listeners {
|
||||
delete(b.listeners, clientMessageChan)
|
||||
close(clientMessageChan)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user