]> Sergey Matveev's repositories - btrtrc.git/commitdiff
cmd/torrent: Add -stats flag
authorMatt Joiner <anacrolix@gmail.com>
Tue, 5 Jun 2018 14:40:03 +0000 (00:40 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Tue, 5 Jun 2018 14:40:03 +0000 (00:40 +1000)
Requires updated tagflag package.

cmd/torrent/main.go

index 2421412b73fa2a1294d9a6c64f74ba4198d4a48c..1d9b4944d568b0e642767fa346e29e9a939fb44c 100644 (file)
@@ -130,6 +130,7 @@ var flags = struct {
        DownloadRate    tagflag.Bytes  `help:"max bytes per second down from peers"`
        Debug           bool
        PackedBlocklist string
+       Stats           *bool
        tagflag.StartPos
        Torrent []string `arity:"+" help:"torrent file path or magnet uri"`
 }{
@@ -143,9 +144,17 @@ func stdoutAndStderrAreSameFile() bool {
        return os.SameFile(fi1, fi2)
 }
 
+func statsEnabled() bool {
+       if flags.Stats == nil {
+               return flags.Debug
+       }
+       return *flags.Stats
+}
+
 func main() {
        log.SetFlags(log.LstdFlags | log.Lshortfile)
        tagflag.Parse(&flags)
+       defer envpprof.Stop()
        clientConfig := torrent.Config{
                Debug: flags.Debug,
                Seed:  flags.Seed,
@@ -193,10 +202,18 @@ func main() {
                log.Fatal("y u no complete torrents?!")
        }
        if flags.Seed {
+               outputStats(client)
                select {}
        }
+       outputStats(client)
+}
+
+func outputStats(cl *torrent.Client) {
+       if !statsEnabled() {
+               return
+       }
        expvar.Do(func(kv expvar.KeyValue) {
                fmt.Printf("%s: %s\n", kv.Key, kv.Value)
        })
-       envpprof.Stop()
+       cl.WriteStatus(os.Stdout)
 }