cmd/torrent: Ensure progress is emitted at consistent intervals
This commit is contained in:
parent
bb4fc82d4b
commit
8706d326ba
|
@ -35,12 +35,13 @@ import (
|
||||||
|
|
||||||
func torrentBar(t *torrent.Torrent, pieceStates bool) {
|
func torrentBar(t *torrent.Torrent, pieceStates bool) {
|
||||||
go func() {
|
go func() {
|
||||||
|
start := time.Now()
|
||||||
if t.Info() == nil {
|
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()
|
<-t.GotInfo()
|
||||||
}
|
}
|
||||||
var lastLine string
|
var lastLine string
|
||||||
for {
|
for range time.Tick(time.Second) {
|
||||||
var completedPieces, partialPieces int
|
var completedPieces, partialPieces int
|
||||||
psrs := t.PieceStateRuns()
|
psrs := t.PieceStateRuns()
|
||||||
for _, r := range psrs {
|
for _, r := range psrs {
|
||||||
|
@ -52,7 +53,8 @@ func torrentBar(t *torrent.Torrent, pieceStates bool) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
line := fmt.Sprintf(
|
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(),
|
t.Name(),
|
||||||
humanize.Bytes(uint64(t.BytesCompleted())),
|
humanize.Bytes(uint64(t.BytesCompleted())),
|
||||||
humanize.Bytes(uint64(t.Length())),
|
humanize.Bytes(uint64(t.Length())),
|
||||||
|
@ -67,7 +69,6 @@ func torrentBar(t *torrent.Torrent, pieceStates bool) {
|
||||||
if pieceStates {
|
if pieceStates {
|
||||||
fmt.Println(psrs)
|
fmt.Println(psrs)
|
||||||
}
|
}
|
||||||
time.Sleep(time.Second)
|
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue