} else {
return requestStrategyInputMultiTorrent{
requestStrategyInputCommon: cl.getRequestStrategyInputCommon(),
- torrents: cl.torrents,
- capFunc: primaryTorrent.storage.Capacity,
+ // TODO: Check this is an appropriate key
+ torrents: cl.torrentsByShortHash,
+ capFunc: primaryTorrent.storage.Capacity,
}
}
}
}
func (r requestStrategyTorrent) Piece(i int) request_strategy.Piece {
- return (*requestStrategyPiece)(r.t.piece(i))
+ return requestStrategyPiece{r.t.piece(i)}
}
func (r requestStrategyTorrent) PieceLength() int64 {
var _ request_strategy.Torrent = requestStrategyTorrent{}
-type requestStrategyPiece Piece
+type requestStrategyPiece struct {
+ p *Piece
+}
-func (r *requestStrategyPiece) Request() bool {
- return !r.t.ignorePieceForRequests(r.index)
+func (r requestStrategyPiece) CountUnverified() bool {
+ return r.p.hashing || r.p.marking || r.p.queuedForHash()
}
-func (r *requestStrategyPiece) NumPendingChunks() int {
- return int(r.t.pieceNumPendingChunks(r.index))
+func (r requestStrategyPiece) Request() bool {
+ return !r.p.ignoreForRequests() && r.p.purePriority() != PiecePriorityNone
}
-var _ request_strategy.Piece = (*requestStrategyPiece)(nil)
+var _ request_strategy.Piece = requestStrategyPiece{}