From c9c137d8f225ef0c4f29fd2c7a0d66ec22c66331 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Thu, 7 Oct 2021 12:09:20 +1100 Subject: [PATCH] Add a flag for Complete --- torrent.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/torrent.go b/torrent.go index 1e47f5e4..bfa84366 100644 --- a/torrent.go +++ b/torrent.go @@ -149,6 +149,9 @@ type Torrent struct { dirtyChunks roaring.Bitmap pex pexState + + // Is On when all pieces are complete. + Complete chansync.Flag } func (t *Torrent) pieceAvailabilityFromPeers(i pieceIndex) (count int) { @@ -413,6 +416,7 @@ func (t *Torrent) setInfo(info *metainfo.Info) error { t.nameMu.Lock() t.info = info t.nameMu.Unlock() + t.updateComplete() t.fileIndex = segments.NewIndex(common.LengthIterFromUpvertedFiles(info.UpvertedFiles())) t.displayName = "" // Save a few bytes lol. t.initFiles() @@ -1264,6 +1268,7 @@ func (t *Torrent) updatePieceCompletion(piece pieceIndex) bool { } else { t._completedPieces.Remove(x) } + t.updateComplete() if complete && len(p.dirtiers) != 0 { t.logger.Printf("marked piece %v complete but still has dirtiers", piece) } @@ -2289,3 +2294,7 @@ func (t *Torrent) numChunks() RequestIndex { func (t *Torrent) pieceRequestIndexOffset(piece pieceIndex) RequestIndex { return RequestIndex(piece) * t.chunksPerRegularPiece() } + +func (t *Torrent) updateComplete() { + t.Complete.SetBool(t.haveAllPieces()) +} -- 2.48.1