]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/cmd/nncp-stat/main.go
nncp-stat -pkt option
[nncp.git] / src / cmd / nncp-stat / main.go
index 22eaca0af5376a54198a7dfaf9fa5dcaa1b3f142..09cc63b66e8157ef7e51847b16bf290e21a758d6 100644 (file)
@@ -32,12 +32,23 @@ import (
 func usage() {
        fmt.Fprintf(os.Stderr, nncp.UsageHeader())
        fmt.Fprintf(os.Stderr, "nncp-stat -- show queued Rx/Tx stats\n\n")
-       fmt.Fprintf(os.Stderr, "Usage: %s [options]\nOptions:\n", os.Args[0])
+       fmt.Fprintf(os.Stderr, "Usage: %s [options] [-pkt] [-node NODE]\nOptions:\n", os.Args[0])
        flag.PrintDefaults()
 }
 
+func jobPrint(xx nncp.TRxTx, job nncp.Job) {
+       fmt.Printf(
+               "\t%s %s %s (nice: %s)\n",
+               string(xx),
+               nncp.ToBase32(job.HshValue[:]),
+               humanize.IBytes(uint64(job.Size)),
+               nncp.NicenessFmt(job.PktEnc.Nice),
+       )
+}
+
 func main() {
        var (
+               showPkt   = flag.Bool("pkt", false, "Show packets listing")
                cfgPath   = flag.String("cfg", nncp.DefaultCfgPath, "Path to configuration file")
                nodeRaw   = flag.String("node", "", "Process only that node")
                spoolPath = flag.String("spool", "", "Override path to spool")
@@ -84,10 +95,14 @@ func main() {
                if nodeOnly != nil && *node.Id != *nodeOnly.Id {
                        continue
                }
+               fmt.Println(node.Name)
                rxNums := make(map[uint8]int)
                rxBytes := make(map[uint8]int64)
                for job := range ctx.Jobs(node.Id, nncp.TRx) {
                        job.Fd.Close()
+                       if *showPkt {
+                               jobPrint(nncp.TRx, job)
+                       }
                        rxNums[job.PktEnc.Nice] = rxNums[job.PktEnc.Nice] + 1
                        rxBytes[job.PktEnc.Nice] = rxBytes[job.PktEnc.Nice] + job.Size
                }
@@ -95,10 +110,12 @@ func main() {
                txBytes := make(map[uint8]int64)
                for job := range ctx.Jobs(node.Id, nncp.TTx) {
                        job.Fd.Close()
+                       if *showPkt {
+                               jobPrint(nncp.TRx, job)
+                       }
                        txNums[job.PktEnc.Nice] = txNums[job.PktEnc.Nice] + 1
                        txBytes[job.PktEnc.Nice] = txBytes[job.PktEnc.Nice] + job.Size
                }
-               fmt.Println(node.Name)
                var nice uint8
                for nice = 1; nice > 0; nice++ {
                        rxNum, rxExists := rxNums[nice]