func (p *PubSub) handleAddSubscription(req *addSubReq) {
	sub := req.sub
	subs := p.myTopics[sub.topic]

	// announce we want this topic
	if len(subs) == 0 {
		p.announce(sub.topic, true)
		p.rt.Join(sub.topic)
	}

	// make new if not there
	if subs == nil {
		p.myTopics[sub.topic] = make(map[*Subscription]struct{})
		subs = p.myTopics[sub.topic]
	}

	sub.ch = make(chan *Message, 32)
	sub.cancelCh = p.cancelCh

	p.myTopics[sub.topic][sub] = struct{}{}

	req.resp <- sub
}
func (p *PubSub) handleAddSubscription(req *addSubReq) {
	sub := req.sub
	subs := p.myTopics[sub.topic]

	
	if len(subs) == 0 {
		p.announce(sub.topic, true)
		p.rt.Join(sub.topic)
	}

	
	if subs == nil {
		p.myTopics[sub.topic] = make(map[*Subscription]struct{})
		subs = p.myTopics[sub.topic]
	}

	sub.ch = make(chan *Message, 32)
	sub.cancelCh = p.cancelCh

	p.myTopics[sub.topic][sub] = struct{}{}

	req.resp <- sub
}
func ( p * PubSub ) handleAddSubscription ( req * addSubReq ) { sub := req . sub subs := p . myTopics [ sub . topic ] // announce we want this topic if len ( subs ) == 0 { p . announce ( sub . topic , true ) p . rt . Join ( sub . topic ) } // make new if not there if subs == nil { p . myTopics [ sub . topic ] = make ( map [ * Subscription ] struct { } ) subs = p . myTopics [ sub . topic ] } sub . ch = make ( chan * Message , 32 ) sub . cancelCh = p . cancelCh p . myTopics [ sub . topic ] [ sub ] = struct { } { } req . resp <- sub }
// handleAddSubscription adds a Subscription for a particular topic. If it is
// the first Subscription for the topic, it will announce that this node
// subscribes to the topic.
// Only called from processLoop.
handleAddSubscription adds a Subscription for a particular topic . If it is the first Subscription for the topic it will announce that this node subscribes to the topic . Only called from processLoop .