Documentation ¶
Index ¶
- Constants
- type Bitfield
- type Block
- type Downloader
- type Event
- type FakeMetrics
- type Message
- type MessageType
- type Metainfo
- type Peer
- func (p *Peer) Cancel(param Block) error
- func (p *Peer) Choke() error
- func (p *Peer) Close()
- func (p *Peer) Have(pieceIdx uint32) error
- func (p *Peer) Info() PeerInfo
- func (p *Peer) Initialize(ctx context.Context) (err error)
- func (p *Peer) Interested() error
- func (p *Peer) KeepAlive() error
- func (p *Peer) NotInterested() error
- func (p *Peer) Request(params Block) error
- func (p *Peer) Run() error
- func (p *Peer) Subscribe(messageCh chan<- Message) error
- func (p *Peer) Unchoke() error
- func (p *Peer) Unchoked() <-chan struct{}
- func (p *Peer) Unsubscribe(messageCh chan<- Message) error
- type PeerID
- type PeerInfo
- type Piece
- type TorrentMetrics
- type TrackerClient
- func (c *TrackerClient) Completed(ctx context.Context) error
- func (c *TrackerClient) Peers() []PeerInfo
- func (c *TrackerClient) RequestNewPeers(ctx context.Context) ([]PeerInfo, error)
- func (c *TrackerClient) Run(ctx context.Context) error
- func (c *TrackerClient) Started(ctx context.Context) error
- func (c *TrackerClient) Stopped(ctx context.Context) error
- type Worker
Constants ¶
View Source
const DefaultBlockLength = 1 << 14
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Downloader ¶
type Downloader struct {
// contains filtered or unexported fields
}
func NewDownloader ¶
func NewDownloader(target Metainfo, self PeerInfo) *Downloader
func (*Downloader) Start ¶
func (d *Downloader) Start(ctx context.Context)
type FakeMetrics ¶
type FakeMetrics struct {
TotalSize int
}
func (FakeMetrics) Downloaded ¶
func (m FakeMetrics) Downloaded() int
func (FakeMetrics) Left ¶
func (m FakeMetrics) Left() int
func (FakeMetrics) Uploaded ¶
func (m FakeMetrics) Uploaded() int
type Message ¶
type Message struct { Type MessageType Payload []byte }
type MessageType ¶
type MessageType byte
const ( ChokeMessage MessageType = iota UnchokeMessage InterestedMessage NotInterestedMessage HaveMessage BitfieldMessage RequestMessage PieceMessage CancelMessage )
type Metainfo ¶
type Metainfo struct { TrackerURL *url.URL // announce Name string // info.name Hashes [][sha1.Size]byte // info.pieces PieceSizeBytes int // info.pieces length TotalSizeBytes int // info.length Files []struct { SizeBytes int // length Path []string // path } RawInfo map[string]any // original map of entire "info" field }
Metainfo describes a torrent.
See: https://www.bittorrent.org/beps/bep_0003.html#metainfo-files
func ParseMetainfo ¶
ParseMetainfo parses a bencoded metainfo file
type Peer ¶
type Peer struct {
// contains filtered or unexported fields
}
func (*Peer) Initialize ¶
Initialize establishes a connection to the peer and performs the initial handshake.
func (*Peer) Interested ¶
func (*Peer) NotInterested ¶
func (*Peer) Unsubscribe ¶
type PeerID ¶
type PeerID [peerIDLen]byte
func PeerIDFromString ¶
func RandPeerID ¶
func RandPeerID() PeerID
type Piece ¶
type Piece struct { Index uint32 Size uint32 BlockSize uint32 Hash [sha1.Size]byte // contains filtered or unexported fields }
func (*Piece) AddBlockPayload ¶
func (*Piece) MissingBlocks ¶
type TorrentMetrics ¶
type TrackerClient ¶
type TrackerClient struct {
// contains filtered or unexported fields
}
func NewTrackerClient ¶
func NewTrackerClient(client *http.Client, target Metainfo, self PeerInfo, metrics TorrentMetrics) *TrackerClient
func (*TrackerClient) Peers ¶
func (c *TrackerClient) Peers() []PeerInfo
func (*TrackerClient) RequestNewPeers ¶
func (c *TrackerClient) RequestNewPeers(ctx context.Context) ([]PeerInfo, error)
type Worker ¶
type Worker struct {
// contains filtered or unexported fields
}
func (*Worker) RequestPiece ¶
func (*Worker) SetCallback ¶
Source Files ¶
Click to show internal directories.
Click to hide internal directories.