Documentation ¶
Overview ¶
Package tracker provides support for announcing torrents to HTTP and UDP trackers.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrDecode = errors.New("cannot decode response")
ErrDecode is returned from Tracker.Announce method when there is problem with the encoding of response.
Functions ¶
Types ¶
type AnnounceRequest ¶
AnnounceRequest contains the parameters that are sent in an announce request to trackers.
type AnnounceResponse ¶
type AnnounceResponse struct { Interval time.Duration MinInterval time.Duration Leechers int32 Seeders int32 WarningMessage string Peers []*net.TCPAddr }
AnnounceResponse contains fields from a response to announce request.
type CompactPeer ¶
CompactPeer is a struct value which consist of a 4-bytes IP address and a 2-bytes port value. CompactPeer can be used as a key in maps because it does not contain any pointers.
func NewCompactPeer ¶
func NewCompactPeer(addr *net.TCPAddr) CompactPeer
NewCompactPeer returns a new CompactPeer from a net.TCPAddr.
func (CompactPeer) Addr ¶
func (p CompactPeer) Addr() *net.TCPAddr
Addr returns a net.TCPAddr from CompactPeer.
func (CompactPeer) MarshalBinary ¶
func (p CompactPeer) MarshalBinary() ([]byte, error)
MarshalBinary returns the bytes.
func (*CompactPeer) UnmarshalBinary ¶
func (p *CompactPeer) UnmarshalBinary(data []byte) error
UnmarshalBinary reads bytes from a slice into the CompactPeer.
type Event ¶
type Event int32
Event type that is sent in an announce request.
Tracker Announce Events. Numbers corresponds to constants in UDP tracker protocol.
type Tier ¶
type Tier struct { Trackers []Tracker // contains filtered or unexported fields }
Tier implements the Tracker interface and contains multiple Trackers which tries to announce to the working Tracker.
func (*Tier) Announce ¶
func (t *Tier) Announce(ctx context.Context, req AnnounceRequest) (*AnnounceResponse, error)
Announce a torrent to the tracker. If annouce fails, the next announce will be made to the next Tracker in the tier.
type Torrent ¶
type Torrent struct { BytesUploaded int64 BytesDownloaded int64 BytesLeft int64 InfoHash [20]byte PeerID [20]byte Port int }
Torrent contains fields that are sent in an announce request.
type Tracker ¶
type Tracker interface { // Announce transfer to the tracker. // Announce should be called periodically with the interval returned in AnnounceResponse. // Announce should also be called on specific events. Announce(ctx context.Context, req AnnounceRequest) (*AnnounceResponse, error) // URL of the tracker. URL() string }
Tracker tracks the IP address of peers of a Torrent swarm.