func (l *PeerList) Add(hostPort string) *Peer {
	if ps, ok := l.exists(hostPort); ok {
		return ps.Peer
	}
	l.Lock()
	defer l.Unlock()

	if p, ok := l.peersByHostPort[hostPort]; ok {
		return p.Peer
	}

	p := l.parent.Add(hostPort)
	p.addSC()
	ps := newPeerScore(p, l.scoreCalculator.GetScore(p))

	l.peersByHostPort[hostPort] = ps
	l.peerHeap.addPeer(ps)
	return p
}
func (l *PeerList) Add(hostPort string) *Peer {
	if ps, ok := l.exists(hostPort); ok {
		return ps.Peer
	}
	l.Lock()
	defer l.Unlock()

	if p, ok := l.peersByHostPort[hostPort]; ok {
		return p.Peer
	}

	p := l.parent.Add(hostPort)
	p.addSC()
	ps := newPeerScore(p, l.scoreCalculator.GetScore(p))

	l.peersByHostPort[hostPort] = ps
	l.peerHeap.addPeer(ps)
	return p
}
func ( l * PeerList ) Add ( hostPort string ) * Peer { if ps , ok := l . exists ( hostPort ) ; ok { return ps . Peer } l . Lock ( ) defer l . Unlock ( ) if p , ok := l . peersByHostPort [ hostPort ] ; ok { return p . Peer } p := l . parent . Add ( hostPort ) p . addSC ( ) ps := newPeerScore ( p , l . scoreCalculator . GetScore ( p ) ) l . peersByHostPort [ hostPort ] = ps l . peerHeap . addPeer ( ps ) return p }
// Add adds a peer to the list if it does not exist, or returns any existing peer.
Add adds a peer to the list if it does not exist or returns any existing peer .