func (p *PubSub) handleRemoveSubscription(sub *Subscription) {
	subs := p.myTopics[sub.topic]

	if subs == nil {
		return
	}

	sub.err = fmt.Errorf("subscription cancelled by calling sub.Cancel()")
	close(sub.ch)
	delete(subs, sub)

	if len(subs) == 0 {
		delete(p.myTopics, sub.topic)
		p.announce(sub.topic, false)
		p.rt.Leave(sub.topic)
	}
}
func (p *PubSub) handleRemoveSubscription(sub *Subscription) {
	subs := p.myTopics[sub.topic]

	if subs == nil {
		return
	}

	sub.err = fmt.Errorf("subscription cancelled by calling sub.Cancel()")
	close(sub.ch)
	delete(subs, sub)

	if len(subs) == 0 {
		delete(p.myTopics, sub.topic)
		p.announce(sub.topic, false)
		p.rt.Leave(sub.topic)
	}
}
func ( p * PubSub ) handleRemoveSubscription ( sub * Subscription ) { subs := p . myTopics [ sub . topic ] if subs == nil { return } sub . err = fmt . Errorf ( " " ) close ( sub . ch ) delete ( subs , sub ) if len ( subs ) == 0 { delete ( p . myTopics , sub . topic ) p . announce ( sub . topic , false ) p . rt . Leave ( sub . topic ) } }
// handleRemoveSubscription removes Subscription sub from bookeeping.
// If this was the last Subscription for a given topic, it will also announce
// that this node is not subscribing to this topic anymore.
// Only called from processLoop.
handleRemoveSubscription removes Subscription sub from bookeeping . If this was the last Subscription for a given topic it will also announce that this node is not subscribing to this topic anymore . Only called from processLoop .