// This function seems to only used by Peer.request. It's all logic checks, so maybe we can no-op it
// when we want to go fast.
func (cn *Peer) shouldRequest(r RequestIndex) error {
- pi := pieceIndex(r / cn.t.chunksPerRegularPiece())
+ pi := cn.t.pieceIndexOfRequestIndex(r)
if cn.requestState.Cancelled.Contains(r) {
return errors.New("request is cancelled and waiting acknowledgement")
}
}
func (t *Torrent) pendRequest(req RequestIndex) {
- t.piece(int(req / t.chunksPerRegularPiece())).pendChunkIndex(req % t.chunksPerRegularPiece())
+ t.piece(t.pieceIndexOfRequestIndex(req)).pendChunkIndex(req % t.chunksPerRegularPiece())
}
func (t *Torrent) pieceCompletionChanged(piece pieceIndex, reason string) {
}
func (t *Torrent) requestIndexToRequest(ri RequestIndex) Request {
- index := ri / t.chunksPerRegularPiece()
+ index := t.pieceIndexOfRequestIndex(ri)
return Request{
pp.Integer(index),
- t.piece(int(index)).chunkIndexSpec(ri % t.chunksPerRegularPiece()),
+ t.piece(index).chunkIndexSpec(ri % t.chunksPerRegularPiece()),
}
}
_, ok := (*f)()
return ok
}
+
+func (t *Torrent) pieceIndexOfRequestIndex(ri RequestIndex) pieceIndex {
+ return pieceIndex(ri / t.chunksPerRegularPiece())
+}