github.com/anacrolix/torrent@v1.61.0/peer_infos.go (about)

     1  package torrent
     2  
     3  import (
     4  	"github.com/anacrolix/dht/v2/krpc"
     5  
     6  	"github.com/anacrolix/torrent/peer_protocol"
     7  	"github.com/anacrolix/torrent/tracker"
     8  )
     9  
    10  // Helper-type used to bulk-manage PeerInfos.
    11  type peerInfos []PeerInfo
    12  
    13  func (me *peerInfos) AppendFromPex(nas []krpc.NodeAddr, fs []peer_protocol.PexPeerFlags) {
    14  	for i, na := range nas {
    15  		var p PeerInfo
    16  		var f peer_protocol.PexPeerFlags
    17  		if i < len(fs) {
    18  			f = fs[i]
    19  		}
    20  		p.FromPex(na, f)
    21  		*me = append(*me, p)
    22  	}
    23  }
    24  
    25  func (ret peerInfos) AppendFromTracker(ps []tracker.Peer) peerInfos {
    26  	for _, p := range ps {
    27  		_p := PeerInfo{
    28  			Addr:   ipPortAddr{p.IP, p.Port},
    29  			Source: PeerSourceTracker,
    30  		}
    31  		copy(_p.Id[:], p.ID)
    32  		ret = append(ret, _p)
    33  	}
    34  	return ret
    35  }