peer_infos.go 725 B

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