piece.go | 7 ++----- requesting.go | 20 +++++++------------- diff --git a/piece.go b/piece.go index e1b6ff90aa8a504330da2095e48593c62bd557f6..c79446972c19ae907e156981264f44edc0a72da4 100644 --- a/piece.go +++ b/piece.go @@ -237,14 +237,11 @@ func (p *Piece) State() PieceState { return p.t.PieceState(p.index) } -func (p *Piece) iterUndirtiedChunks(f func(cs ChunkSpec) bool) bool { +func (p *Piece) iterUndirtiedChunks(f func(cs ChunkSpec)) { for i := pp.Integer(0); i < p.numChunks(); i++ { if p.chunkIndexDirty(i) { continue } - if !f(p.chunkIndexSpec(i)) { - return false - } + f(p.chunkIndexSpec(i)) } - return true } diff --git a/requesting.go b/requesting.go index 6a10e0a9e16f5a477dce5c68a7c2844930acbbef..829470f72bd936c8e11426b39eb8287fdd27bcf1 100644 --- a/requesting.go +++ b/requesting.go @@ -8,7 +8,6 @@ "github.com/anacrolix/missinggo/v2/bitmap" "github.com/anacrolix/chansync" request_strategy "github.com/anacrolix/torrent/request-strategy" - "github.com/anacrolix/torrent/types" ) func (cl *Client) requester() { @@ -50,18 +49,13 @@ rst.Pieces = make([]request_strategy.Piece, 0, len(t.pieces)) for i := range t.pieces { p := &t.pieces[i] rst.Pieces = append(rst.Pieces, request_strategy.Piece{ - Request: !t.ignorePieceForRequests(i), - Priority: p.purePriority(), - Partial: t.piecePartiallyDownloaded(i), - Availability: p.availability, - Length: int64(p.length()), - NumPendingChunks: int(t.pieceNumPendingChunks(i)), - IterPendingChunks: func(f func(types.ChunkSpec)) { - p.iterUndirtiedChunks(func(cs ChunkSpec) bool { - f(cs) - return true - }) - }, + Request: !t.ignorePieceForRequests(i), + Priority: p.purePriority(), + Partial: t.piecePartiallyDownloaded(i), + Availability: p.availability, + Length: int64(p.length()), + NumPendingChunks: int(t.pieceNumPendingChunks(i)), + IterPendingChunks: p.iterUndirtiedChunks, }) } t.iterPeers(func(p *Peer) {