import "github.com/anacrolix/torrent/tracker"
expvar.go http.go peer.go server.go tracker.go udp.go
The code *is* the documentation.
type Announce struct { TrackerUrl string Request AnnounceRequest HostHeader string HTTPProxy func(*http.Request) (*url.URL, error) ServerName string UserAgent string UdpNetwork string // If the port is zero, it's assumed to be the same as the Request.Port. ClientIp4 krpc.NodeAddr // If the port is zero, it's assumed to be the same as the Request.Port. ClientIp6 krpc.NodeAddr Context context.Context }
func (me Announce) Do() (res AnnounceResponse, err error)
const ( None AnnounceEvent = iota Completed // The local peer just completed the torrent. Started // The local peer has just resumed this torrent. Stopped // The local peer is leaving the swarm. )
func (e AnnounceEvent) String() string
type AnnounceRequest struct { InfoHash [20]byte PeerId [20]byte Downloaded int64 Left int64 // If less than 0, math.MaxInt64 will be used for HTTP trackers instead. Uploaded int64 // Apparently this is optional. None can be used for announces done at // regular intervals. Event AnnounceEvent IPAddress uint32 Key int32 NumWant int32 // How many peer addresses are desired. -1 for default. Port uint16 } // 82 bytes
Marshalled as binary by the UDP client, so be careful making changes.
type AnnounceResponse struct { Interval int32 // Minimum seconds the local peer should wait before next announce. Leechers int32 Seeders int32 Peers []Peer }
type HttpResponse struct { FailureReason string `bencode:"failure reason"` Interval int32 `bencode:"interval"` TrackerId string `bencode:"tracker id"` Complete int32 `bencode:"complete"` Incomplete int32 `bencode:"incomplete"` Peers Peers `bencode:"peers"` // BEP 7 Peers6 krpc.CompactIPv6NodeAddrs `bencode:"peers6"` }
Set from the non-compact form in BEP 3.
Package tracker imports 22 packages (graph) and is imported by 31 packages. Updated 2020-12-30. Refresh now. Tools for package owners.