func (l *PeerList) GetNew(prevSelected map[string]struct{}) (*Peer, error) {
	l.Lock()
	defer l.Unlock()
	if l.peerHeap.Len() == 0 {
		return nil, ErrNoPeers
	}

	// Select a peer, avoiding previously selected peers. If all peers have been previously
	// selected, then it's OK to repick them.
	peer := l.choosePeer(prevSelected, true /* avoidHost */)
	if peer == nil {
		peer = l.choosePeer(prevSelected, false /* avoidHost */)
	}
	if peer == nil {
		return nil, ErrNoNewPeers
	}
	return peer, nil
}
func (l *PeerList) GetNew(prevSelected map[string]struct{}) (*Peer, error) {
	l.Lock()
	defer l.Unlock()
	if l.peerHeap.Len() == 0 {
		return nil, ErrNoPeers
	}

	
	
	peer := l.choosePeer(prevSelected, true )
	if peer == nil {
		peer = l.choosePeer(prevSelected, false )
	}
	if peer == nil {
		return nil, ErrNoNewPeers
	}
	return peer, nil
}
func ( l * PeerList ) GetNew ( prevSelected map [ string ] struct { } ) ( * Peer , error ) { l . Lock ( ) defer l . Unlock ( ) if l . peerHeap . Len ( ) == 0 { return nil , ErrNoPeers } // Select a peer, avoiding previously selected peers. If all peers have been previously // selected, then it's OK to repick them. peer := l . choosePeer ( prevSelected , true /* avoidHost */ ) if peer == nil { peer = l . choosePeer ( prevSelected , false /* avoidHost */ ) } if peer == nil { return nil , ErrNoNewPeers } return peer , nil }
// GetNew returns a new, previously unselected peer from the peer list, or nil,
// if no new unselected peer can be found.
GetNew returns a new previously unselected peer from the peer list or nil if no new unselected peer can be found .