Documentation
¶
Index ¶
- type BitField
- type Config
- type Downloader
- type ExtendedMessage
- type FileInfo
- type Handshake
- type HaveMessage
- type Message
- type MessageID
- type MetaData
- type MetaDataPiece
- type Peer
- func (p *Peer) DownloadPiece(conn net.Conn, readTimeout time.Duration, pieceIndex int, pieceLength int, ...) ([]byte, error)
- func (p *Peer) HandleBitFieldMessage(msg *Message)
- func (p *Peer) HandleMessage(msg *Message) error
- func (p Peer) HasPiece(pieceIndex int) bool
- func (p *Peer) IsBitFieldValid(pieceCount int) error
- func (p Peer) SendInterestedMessage(conn net.Conn) error
- func (p Peer) SendUnchokeMessage(conn net.Conn) error
- func (p *Peer) SetPiece(pieceIndex int)
- func (p *Peer) ShakeHands(conn net.Conn, readTimeout time.Duration, infoHash [20]byte, ID [20]byte) error
- func (p Peer) String() string
- type PieceMessage
- type Torrent
- type TorrentFileInfo
- type TorrentInfo
- type TorrentMetaInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Downloader ¶
type Downloader struct {
Config Config
Torrent *Torrent
Logger *log.Logger
ClientID [20]byte
Port int
MetaDataSize int
MetaDataPieceSize int
MetaDataPieceCount int
MetaDataSizeCh chan int
MetaDataSizeDoneCh chan struct{}
MetaDataPieceCh chan MetaDataPiece
MetaDataPiecesDoneCh chan struct{}
GotMetaData atomic.Bool
Files []*os.File
Ranges map[int][]fileRange
PieceRequestsCh chan pieceRequest
PieceResponseCh chan pieceResponce
InFlightPeers map[string]bool
FetchPeerCh chan string
RetryPeerCh chan string
Closed chan struct{}
Done chan struct{}
Progress chan float64
}
func NewDownloader ¶
func NewDownloader(config Config, torrent *Torrent, logger *log.Logger) *Downloader
func (*Downloader) Close ¶
func (d *Downloader) Close()
func (*Downloader) Start ¶
func (d *Downloader) Start(downloadPath string) error
type ExtendedMessage ¶
func (*ExtendedMessage) Serialize ¶
func (e *ExtendedMessage) Serialize() []byte
type HaveMessage ¶
type HaveMessage struct {
PieceIndex int
}
type MetaDataPiece ¶
type Peer ¶
func (*Peer) DownloadPiece ¶
func (*Peer) HandleBitFieldMessage ¶
func (*Peer) HandleMessage ¶
func (*Peer) IsBitFieldValid ¶
func (*Peer) ShakeHands ¶
type PieceMessage ¶
type TorrentFileInfo ¶
type TorrentInfo ¶
type TorrentInfo struct {
Length int `bencode:"length,omitempty"`
Name string `bencode:"name"`
Files []TorrentFileInfo `bencode:"files,omitempty"`
PieceLength int `bencode:"piece length"`
Pieces string `bencode:"pieces"`
}
type TorrentMetaInfo ¶
type TorrentMetaInfo struct {
Announce string `bencode:"announce"`
AnnounceList [][]string `bencode:"announce-list"`
Info TorrentInfo `bencode:"info"`
}
Click to show internal directories.
Click to hide internal directories.