]> Sergey Matveev's repositories - btrtrc.git/blob - tracker/http/peer.go
Rename tracker/http package
[btrtrc.git] / tracker / http / peer.go
1 package httpTracker
2
3 import (
4         "fmt"
5         "net"
6
7         "github.com/anacrolix/dht/v2/krpc"
8 )
9
10 type Peer struct {
11         IP   net.IP
12         Port int
13         ID   []byte
14 }
15
16 func (p Peer) String() string {
17         loc := net.JoinHostPort(p.IP.String(), fmt.Sprintf("%d", p.Port))
18         if len(p.ID) != 0 {
19                 return fmt.Sprintf("%x at %s", p.ID, loc)
20         } else {
21                 return loc
22         }
23 }
24
25 // Set from the non-compact form in BEP 3.
26 func (p *Peer) FromDictInterface(d map[string]interface{}) {
27         p.IP = net.ParseIP(d["ip"].(string))
28         if _, ok := d["peer id"]; ok {
29                 p.ID = []byte(d["peer id"].(string))
30         }
31         p.Port = int(d["port"].(int64))
32 }
33
34 func (p Peer) FromNodeAddr(na krpc.NodeAddr) Peer {
35         p.IP = na.IP
36         p.Port = na.Port
37         return p
38 }