Documentation
      ¶
    
    
  
    
  
    Index ¶
Constants ¶
This section is empty.
Variables ¶
      View Source
      
  
var ( // ErrBlockDuplicate is returned from PieceDownloader.GotBlock method when the received block is already present. ErrBlockDuplicate = errors.New("received duplicate block") // ErrBlockNotRequested is returned from PieceDownloader.GotBlock method when the received block is not requested yet. ErrBlockNotRequested = errors.New("received not requested block") )
Functions ¶
This section is empty.
Types ¶
type Peer ¶
type Peer interface {
	RequestPiece(index, begin, length uint32)
	CancelPiece(index, begin, length uint32)
	EnabledFast() bool
}
    Peer of a Torrent.
type PieceDownloader ¶
type PieceDownloader struct {
	Piece       *piece.Piece
	Peer        Peer
	AllowedFast bool
	Buffer      bufferpool.Buffer
	// contains filtered or unexported fields
}
    PieceDownloader downloads all blocks of a piece from a peer.
func New ¶
func New(pi *piece.Piece, pe Peer, allowedFast bool, buf bufferpool.Buffer) *PieceDownloader
New returns a new PieceDownloader.
func (*PieceDownloader) CancelPending ¶
func (d *PieceDownloader) CancelPending()
CancelPending is called to cancel pending requests to the peer. Must be called when remaining blocks are downloaded from another peer.
func (*PieceDownloader) Choked ¶
func (d *PieceDownloader) Choked()
Choked must be called when the peer has choked us. This will cancel pending reuqests.
func (*PieceDownloader) Done ¶
func (d *PieceDownloader) Done() bool
Done returns true if all blocks of the piece has been downloaded.
func (*PieceDownloader) GotBlock ¶
func (d *PieceDownloader) GotBlock(block piece.Block, data []byte) error
GotBlock must be called when a block is received from the piece.
func (*PieceDownloader) Rejected ¶
func (d *PieceDownloader) Rejected(block piece.Block)
Rejected must be called when the peer has rejected a piece request.
func (*PieceDownloader) RequestBlocks ¶
func (d *PieceDownloader) RequestBlocks(queueLength int)
RequestBlocks is called to request remaining blocks of the piece up to `queueLength`.
 Click to show internal directories. 
   Click to hide internal directories.