]> Sergey Matveev's repositories - btrtrc.git/blobdiff - request-strategy-impls.go
cmd/btrtrc client
[btrtrc.git] / request-strategy-impls.go
index 661769f3c1a94d5767397444d455d273785e8726..dfcec28ae4c2b4d6a297eb9e0c7c11eab8f4f0a4 100644 (file)
@@ -59,8 +59,9 @@ func (cl *Client) getRequestStrategyInput(primaryTorrent *Torrent) (input reques
        } 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,
                }
        }
 }
@@ -74,7 +75,7 @@ type requestStrategyTorrent struct {
 }
 
 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 {
@@ -83,14 +84,16 @@ 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{}