func()

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()
}