afl-transmit/stats/stats.go

38 lines
718 B
Go
Raw Normal View History

2021-04-20 08:28:03 +00:00
package stats
import (
"fmt"
"github.com/dustin/go-humanize"
"time"
)
// Stat bundles the metrics we collect into a single struct
type Stat struct {
SentBytes uint64
ReceivedBytes uint64
}
// statPipe is a channel used to
var stats Stat
// PushStat pushes the given stat
func PushStat(s Stat) {
stats.SentBytes += s.SentBytes
stats.ReceivedBytes += s.ReceivedBytes
}
// PrintStats periodically prints the collected statistics
func PrintStats() {
t := time.NewTicker(2 * time.Second)
for {
// Wait until we get a tick
<-t.C
// Format numbers and write them out
bIn := humanize.Bytes(stats.ReceivedBytes)
bOut := humanize.Bytes(stats.SentBytes)
fmt.Printf("%s in / %s out\r", bIn, bOut)
}
}