Documentation ¶
Index ¶
- func GetRequestablePieces(input Input, pro *PieceRequestOrder, ...)
- func NewAjwernerBtree() *ajwernerBtree
- func NewTidwallBtree() *tidwallBtree
- type Btree
- type ChunkIndex
- type ChunkSpec
- type Input
- type PeerRequestState
- type PeerRequests
- type Piece
- type PieceRequestOrder
- func (me *PieceRequestOrder) Add(key PieceRequestOrderKey, state PieceRequestOrderState) (old g.Option[PieceRequestOrderState])
- func (me *PieceRequestOrder) Delete(key PieceRequestOrderKey) bool
- func (me *PieceRequestOrder) Len() int
- func (me *PieceRequestOrder) Update(key PieceRequestOrderKey, state PieceRequestOrderState)
- type PieceRequestOrderKey
- type PieceRequestOrderPathHint
- type PieceRequestOrderState
- type Request
- type RequestIndex
- type Torrent
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetRequestablePieces ¶
func GetRequestablePieces( input Input, pro *PieceRequestOrder, requestPiece func(ih metainfo.Hash, pieceIndex int, orderState PieceRequestOrderState) bool, )
Calls f with requestable pieces in order.
func NewAjwernerBtree ¶
func NewAjwernerBtree() *ajwernerBtree
func NewTidwallBtree ¶
func NewTidwallBtree() *tidwallBtree
Types ¶
type Btree ¶
type Btree interface { Delete(pieceRequestOrderItem) Add(pieceRequestOrderItem) Scan(func(pieceRequestOrderItem) bool) }
type ChunkIndex ¶
type ChunkIndex = RequestIndex
type Input ¶
type Input interface { Torrent(metainfo.Hash) Torrent // Storage capacity, shared among all Torrents with the same storage.TorrentCapacity pointer in // their storage.Torrent references. Capacity() (cap int64, capped bool) // Across all the Torrents. This might be partitioned by storage capacity key now. MaxUnverifiedBytes() int64 }
type PeerRequestState ¶
type PeerRequestState struct { Interested bool Requests PeerRequests // Cancelled and waiting response Cancelled typedRoaring.Bitmap[RequestIndex] }
type PeerRequests ¶
type PeerRequests interface { // Can be more efficient than GetCardinality. IsEmpty() bool // See roaring.Bitmap.GetCardinality. GetCardinality() uint64 Contains(RequestIndex) bool // Should not adjust iteration order if item already exists, although I don't think that usage // exists. Add(RequestIndex) // See roaring.Bitmap.Rank. Rank(RequestIndex) uint64 // Must yield in order items were added. Iterate(func(RequestIndex) bool) // See roaring.Bitmap.CheckedRemove. CheckedRemove(RequestIndex) bool // Iterate a snapshot of the values. It is safe to mutate the underlying data structure. IterateSnapshot(func(RequestIndex) bool) }
A set of request indices iterable by order added.
type Piece ¶
type Piece interface { // Whether requests should be made for this piece. This would be false for cases like the piece // is currently being hashed, or already complete. Request() bool // Whether the piece should be counted towards the unverified bytes limit. The intention is to // prevent pieces being starved from the opportunity to move to the completed state. CountUnverified() bool }
type PieceRequestOrder ¶
type PieceRequestOrder struct {
// contains filtered or unexported fields
}
func NewPieceOrder ¶
func NewPieceOrder(btree Btree, cap int) *PieceRequestOrder
func (*PieceRequestOrder) Add ¶
func (me *PieceRequestOrder) Add( key PieceRequestOrderKey, state PieceRequestOrderState, ) (old g.Option[PieceRequestOrderState])
Returns the old state if the key was already present.
func (*PieceRequestOrder) Delete ¶
func (me *PieceRequestOrder) Delete(key PieceRequestOrderKey) bool
func (*PieceRequestOrder) Len ¶
func (me *PieceRequestOrder) Len() int
func (*PieceRequestOrder) Update ¶
func (me *PieceRequestOrder) Update( key PieceRequestOrderKey, state PieceRequestOrderState, )
type PieceRequestOrderKey ¶
type PieceRequestOrderState ¶
type RequestIndex ¶
type RequestIndex uint32
Click to show internal directories.
Click to hide internal directories.