"os"
"path"
"sort"
+ "strconv"
"strings"
"sync"
"syscall"
}
}
+func mustParseInt(s string) int {
+ i, err := strconv.Atoi(s)
+ if err != nil {
+ log.Fatalln(err)
+ }
+ return i
+}
+
func fifoPeerList(t *torrent.Torrent) {
pth := path.Join(FIFOsDir, PeersDir, t.InfoHash().HexString())
recreateFIFO(pth)
pcs := t.PeerConns()
sort.Sort(ByPeerID(pcs))
for _, pc := range pcs {
- completed := pc.CompletedString()
- completedColour := Red
- cols := strings.Split(completed, "/")
- if cols[0] == cols[1] {
- completedColour = Green
+ cols := strings.Split(pc.CompletedString(), "/")
+ done := (mustParseInt(cols[0]) * 100) / mustParseInt(cols[1])
+ doneColour := Red
+ if done == 100 {
+ doneColour = Green
}
stats := pc.Peer.Stats()
fmt.Fprintf(fd,
- "%s%s%s %10s %s%11s%s %s%d%s/%s%d%s %s / %s | %s%s%s %q\n",
+ "%s%s%s %10s %s%3d%%%s %s%d%s/%s%d%s %s / %s | %s%s%s %q\n",
Blue, hex.EncodeToString(pc.PeerID[:]), Reset,
pc.StatusFlags(),
- completedColour, pc.CompletedString(), Reset,
+ doneColour, done, Reset,
Green, int(pc.DownloadRate()/1024), Reset,
Magenta, int(pc.UploadRate()/1024), Reset,
humanize.IBytes(uint64(stats.BytesReadData.Int64())),