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 }