2
0
mirror of synced 2025-02-24 06:38:14 +00:00
torrent/peer_infos.go

36 lines
725 B
Go
Raw Normal View History

2018-02-13 00:50:32 +11:00
package torrent
2018-02-19 16:19:18 +11:00
import (
2019-08-10 18:46:07 +10:00
"github.com/anacrolix/dht/v2/krpc"
2019-08-21 20:58:40 +10:00
2018-07-10 11:21:24 +10:00
"github.com/anacrolix/torrent/peer_protocol"
2018-02-19 16:19:18 +11:00
"github.com/anacrolix/torrent/tracker"
)
2018-02-13 00:50:32 +11:00
// Helper-type used to bulk-manage PeerInfos.
type peerInfos []PeerInfo
2018-02-13 00:50:32 +11:00
func (me *peerInfos) AppendFromPex(nas []krpc.NodeAddr, fs []peer_protocol.PexPeerFlags) {
2018-02-13 00:50:32 +11:00
for i, na := range nas {
var p PeerInfo
2018-07-10 11:21:24 +10:00
var f peer_protocol.PexPeerFlags
2018-02-13 00:50:32 +11:00
if i < len(fs) {
f = fs[i]
}
p.FromPex(na, f)
*me = append(*me, p)
}
}
2018-02-19 16:19:18 +11:00
func (ret peerInfos) AppendFromTracker(ps []tracker.Peer) peerInfos {
2018-02-19 16:19:18 +11:00
for _, p := range ps {
_p := PeerInfo{
Addr: ipPortAddr{p.IP, p.Port},
Source: PeerSourceTracker,
2018-02-19 16:19:18 +11:00
}
copy(_p.Id[:], p.ID)
ret = append(ret, _p)
}
return ret
}