Add Channel helper

This commit is contained in:
Vladimir Mihailenco 2017-04-11 16:18:35 +03:00
parent 2e4944712d
commit 34ea5f98eb
1 changed files with 20 additions and 0 deletions

View File

@ -280,6 +280,26 @@ func (c *PubSub) resubscribe() {
} }
} }
// Channel returns a channel for concurrently receiving messages.
// The channel is closed with PubSub.
func (c *PubSub) Channel() <-chan *Message {
ch := make(chan *Message, 100)
go func() {
for {
msg, err := c.ReceiveMessage()
if err != nil {
if err == pool.ErrClosed {
break
}
continue
}
ch <- msg
}
close(ch)
}()
return ch
}
func remove(ss []string, es ...string) []string { func remove(ss []string, es ...string) []string {
if len(es) == 0 { if len(es) == 0 {
return ss[:0] return ss[:0]