4 request_strategy "github.com/anacrolix/torrent/request-strategy"
7 func (t *Torrent) updatePieceRequestOrder(pieceIndex int) {
11 if ro, ok := t.cl.pieceRequestOrder[t.clientPieceRequestOrderKey()]; ok {
13 t.pieceRequestOrderKey(pieceIndex),
14 t.requestStrategyPieceOrderState(pieceIndex))
18 func (t *Torrent) clientPieceRequestOrderKey() interface{} {
19 if t.storage.Capacity == nil {
22 return t.storage.Capacity
25 func (t *Torrent) deletePieceRequestOrder() {
29 cpro := t.cl.pieceRequestOrder
30 key := t.clientPieceRequestOrderKey()
32 for i := 0; i < t.numPieces(); i++ {
33 pro.Delete(t.pieceRequestOrderKey(i))
40 func (t *Torrent) initPieceRequestOrder() {
44 if t.cl.pieceRequestOrder == nil {
45 t.cl.pieceRequestOrder = make(map[interface{}]*request_strategy.PieceRequestOrder)
47 key := t.clientPieceRequestOrderKey()
48 cpro := t.cl.pieceRequestOrder
50 cpro[key] = request_strategy.NewPieceOrder(request_strategy.NewAjwernerBtree(), t.numPieces())
54 func (t *Torrent) addRequestOrderPiece(i int) {
58 t.cl.pieceRequestOrder[t.clientPieceRequestOrderKey()].Add(
59 t.pieceRequestOrderKey(i),
60 t.requestStrategyPieceOrderState(i))
63 func (t *Torrent) getPieceRequestOrder() *request_strategy.PieceRequestOrder {
64 return t.cl.pieceRequestOrder[t.clientPieceRequestOrderKey()]