in pubsub.go [200:233]
func (p *Pubsub) UnsubscribeAll(c Writable) {
p.mu.Lock()
var (
toUnsub = p.patterns.removeAll(c)
command []byte
)
if len(toUnsub) > 0 {
r := NewRequest(commandPUnsubscribe, len(toUnsub))
for _, p := range toUnsub {
r.Bulk(p)
}
command = append(command, r.Bytes()...)
}
toUnsub = p.channels.removeAll(c)
if len(toUnsub) > 0 {
r := NewRequest(commandUnsubscribe, len(toUnsub))
for _, p := range toUnsub {
r.Bulk(p)
}
command = append(command, r.Bytes()...)
}
if p.connection != nil && len(command) > 0 {
p.connection.SetWriteDeadline(time.Now().Add(p.writeTimeout))
go p.connection.Write(command)
}
p.mu.Unlock()
}