"errors"
"fmt"
"io"
- "math/rand"
"net/http"
"net/url"
"sort"
activePieceHashes int
initialPieceCheckDisabled bool
- // A pool of piece priorities []int for assignment to new connections.
- // These "inclinations" are used to give connections preference for
- // different pieces.
- connPieceInclinationPool sync.Pool
-
// Count of each request across active connections.
pendingRequests pendingRequests
// Chunks we've written to since the corresponding piece was last checked.
return
}
-func (t *Torrent) getConnPieceInclination() []int {
- _ret := t.connPieceInclinationPool.Get()
- if _ret == nil {
- pieceInclinationsNew.Add(1)
- return rand.Perm(int(t.numPieces()))
- }
- pieceInclinationsReused.Add(1)
- return *_ret.(*[]int)
-}
-
-func (t *Torrent) putPieceInclination(pi []int) {
- t.connPieceInclinationPool.Put(&pi)
- pieceInclinationsPut.Add(1)
-}
-
func (t *Torrent) updatePieceCompletion(piece pieceIndex) bool {
p := t.piece(piece)
uncached := t.pieceCompleteUncached(piece)