This section is empty.


View Source
var (
	ErrBadScheme = errors.New("unknown scheme")


This section is empty.


type Action

type Action int32
const (
	ActionConnect Action = iota

type Announce

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 (Announce) Do

func (me Announce) Do() (res AnnounceResponse, err error)

type AnnounceEvent

type AnnounceEvent int32
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 (AnnounceEvent) String

func (e AnnounceEvent) String() string

type AnnounceRequest

type AnnounceRequest struct {
	InfoHash   [20]byte
	PeerId     [20]byte
	Downloaded int64
	Left       uint64
	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

    type AnnounceResponse struct {
    	Interval int32 // Minimum seconds the local peer should wait before next announce.
    	Leechers int32
    	Seeders  int32
    	Peers    []Peer

    type AnnounceResponseHeader

    type AnnounceResponseHeader struct {
    	Interval int32
    	Leechers int32
    	Seeders  int32

    type ConnectionRequest

    type ConnectionRequest struct {
    	ConnectionId int64
    	Action       int32
    	TransctionId int32

    type ConnectionResponse

    type ConnectionResponse struct {
    	ConnectionId int64

    type Peer

    type Peer struct {
    	IP   net.IP
    	Port int
    	ID   []byte

    func (Peer) FromNodeAddr

    func (p Peer) FromNodeAddr(na krpc.NodeAddr) Peer

    type Peers

    type Peers []Peer

    func (*Peers) UnmarshalBencode

    func (me *Peers) UnmarshalBencode(b []byte) (err error)

    type RequestHeader

    type RequestHeader struct {
    	ConnectionId  int64
    	Action        Action
    	TransactionId int32
    } // 16 bytes

    type ResponseHeader

    type ResponseHeader struct {
    	Action        Action
    	TransactionId int32