From 906d3bc5bb94b39bf12589dcbf04e46d44f20eed Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Sun, 28 Jan 2018 15:58:55 +1100 Subject: [PATCH] Include completion known in PieceState --- piece.go | 6 ++++++ piecestate.go | 6 +++++- torrent.go | 9 ++++++--- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/piece.go b/piece.go index 4726faf7..8e89ba62 100644 --- a/piece.go +++ b/piece.go @@ -229,3 +229,9 @@ func (p *Piece) uncachedPriority() (ret piecePriority) { ret.Raise(p.priority) return } + +func (p *Piece) completion() (ret storage.Completion) { + ret.Complete = p.t.pieceComplete(p.index) + ret.Ok = p.storageCompletionOk + return +} diff --git a/piecestate.go b/piecestate.go index 358ffcf2..6007e338 100644 --- a/piecestate.go +++ b/piecestate.go @@ -1,10 +1,14 @@ package torrent +import ( + "github.com/anacrolix/torrent/storage" +) + // The current state of a piece. type PieceState struct { Priority piecePriority // The piece is available in its entirety. - Complete bool + storage.Completion // The piece is being hashed, or is queued for hash. Checking bool // Some of the piece has been obtained. diff --git a/torrent.go b/torrent.go index 7063969b..976a04e3 100644 --- a/torrent.go +++ b/torrent.go @@ -449,9 +449,7 @@ func (t *Torrent) name() string { func (t *Torrent) pieceState(index int) (ret PieceState) { p := &t.pieces[index] ret.Priority = t.piecePriority(index) - if t.pieceComplete(index) { - ret.Complete = true - } + ret.Completion = p.completion() if p.queuedForHash() || p.hashing { ret.Checking = true } @@ -511,6 +509,8 @@ func pieceStateRunStatusChars(psr PieceStateRun) (ret string) { return "R" case PiecePriorityNow: return "!" + case PiecePriorityHigh: + return "H" default: return "" } @@ -524,6 +524,9 @@ func pieceStateRunStatusChars(psr PieceStateRun) (ret string) { if psr.Complete { ret += "C" } + if !psr.Ok { + ret += "?" + } return } -- 2.48.1