From 8706d326bac7f7f5a1f021620718e1cc4ad77cee Mon Sep 17 00:00:00 2001
From: Matt Joiner <anacrolix@gmail.com>
Date: Tue, 4 May 2021 16:08:21 +1000
Subject: [PATCH] cmd/torrent: Ensure progress is emitted at consistent
 intervals

---
 cmd/torrent/main.go | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/cmd/torrent/main.go b/cmd/torrent/main.go
index 2271b931..0d32aa4b 100644
--- a/cmd/torrent/main.go
+++ b/cmd/torrent/main.go
@@ -35,12 +35,13 @@ import (
 
 func torrentBar(t *torrent.Torrent, pieceStates bool) {
 	go func() {
+		start := time.Now()
 		if t.Info() == nil {
-			fmt.Printf("getting torrent info for %q\n", t.Name())
+			fmt.Printf("%v: getting torrent info for %q\n", time.Since(start), t.Name())
 			<-t.GotInfo()
 		}
 		var lastLine string
-		for {
+		for range time.Tick(time.Second) {
 			var completedPieces, partialPieces int
 			psrs := t.PieceStateRuns()
 			for _, r := range psrs {
@@ -52,7 +53,8 @@ func torrentBar(t *torrent.Torrent, pieceStates bool) {
 				}
 			}
 			line := fmt.Sprintf(
-				"downloading %q: %s/%s, %d/%d pieces completed (%d partial)\n",
+				"%v: downloading %q: %s/%s, %d/%d pieces completed (%d partial)\n",
+				time.Since(start),
 				t.Name(),
 				humanize.Bytes(uint64(t.BytesCompleted())),
 				humanize.Bytes(uint64(t.Length())),
@@ -67,7 +69,6 @@ func torrentBar(t *torrent.Torrent, pieceStates bool) {
 			if pieceStates {
 				fmt.Println(psrs)
 			}
-			time.Sleep(time.Second)
 		}
 	}()
 }
-- 
2.51.0