예제 #1
0
파일: pair.go 프로젝트: iwarsong/bearded
func (x *pair) AddEndpoint(ep mangos.Endpoint) {
	x.Lock()
	if x.peer != nil {
		x.Unlock()
		ep.Close()
		return
	}
	x.peer = ep
	x.Unlock()

	x.senders.Add()
	go x.receiver(ep)
	go x.sender(ep)
}
예제 #2
0
func (x *resp) AddEndpoint(ep mangos.Endpoint) {
	x.Lock()
	if x.peer != nil {
		x.Unlock()
		ep.Close()
		return
	}
	peer := &respPeer{ep: ep, x: x, q: make(chan *mangos.Message, 1)}
	x.peer = peer
	x.Unlock()

	x.senders.Add()
	go peer.receiver()
	go peer.sender()
}
예제 #3
0
파일: pair.go 프로젝트: rlhatcher/mangos
func (x *pair) AddEndpoint(ep mangos.Endpoint) {
	peer := &pairEp{cq: make(chan struct{}), ep: ep}
	x.Lock()
	if x.peer != nil {
		// We already have a connection, reject this one.
		x.Unlock()
		ep.Close()
		return
	}
	x.peer = peer
	x.Unlock()

	x.w.Add()
	go x.receiver(peer)
	go x.sender(peer)
}