]> Sergey Matveev's repositories - btrtrc.git/blob - peer_infos.go
Drop support for go 1.20
[btrtrc.git] / peer_infos.go
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 }