4 request_strategy "github.com/anacrolix/torrent/request-strategy"
7 func (t *Torrent) updatePieceRequestOrder(pieceIndex int) {
8 t.cl.pieceRequestOrder[t.clientPieceRequestOrderKey()].Update(
9 t.pieceRequestOrderKey(pieceIndex),
10 t.requestStrategyPieceOrderState(pieceIndex))
13 func (t *Torrent) clientPieceRequestOrderKey() interface{} {
14 if t.storage.Capacity == nil {
17 return t.storage.Capacity
20 func (t *Torrent) deletePieceRequestOrder() {
21 cpro := t.cl.pieceRequestOrder
22 key := t.clientPieceRequestOrderKey()
24 for i := 0; i < t.numPieces(); i++ {
25 pro.Delete(t.pieceRequestOrderKey(i))
32 func (t *Torrent) initPieceRequestOrder() {
33 if t.cl.pieceRequestOrder == nil {
34 t.cl.pieceRequestOrder = make(map[interface{}]*request_strategy.PieceRequestOrder)
36 key := t.clientPieceRequestOrderKey()
37 cpro := t.cl.pieceRequestOrder
39 cpro[key] = request_strategy.NewPieceOrder()
43 func (t *Torrent) addRequestOrderPiece(i int) {
44 t.cl.pieceRequestOrder[t.clientPieceRequestOrderKey()].Add(
45 t.pieceRequestOrderKey(i),
46 t.requestStrategyPieceOrderState(i))
49 func (t *Torrent) getPieceRequestOrder() *request_strategy.PieceRequestOrder {
50 return t.cl.pieceRequestOrder[t.clientPieceRequestOrderKey()]