From aed415a531cc70bfa4e98afb583e444f9fe43ff6 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 12 Mar 2023 14:59:47 +0100 Subject: [PATCH] main.go: Adding some documentation. --- main.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/main.go b/main.go index fd1eeae..8e941a3 100644 --- a/main.go +++ b/main.go @@ -11,10 +11,13 @@ import ( "github.com/prometheus-community/pro-bing" ) +// printStats prints statistics from a ping. func printStats(pinger *probing.Pinger) { stats := pinger.Statistics() + fmt.Printf("%d packets transmitted, %d packets received, %.2f%% packet loss\n", stats.PacketsSent, stats.PacketsRecv, stats.PacketLoss) + fmt.Printf("round-trip min/avg/max/stddev = %v/%v/%v/%v\n", stats.MinRtt, stats.AvgRtt, stats.MaxRtt, stats.StdDevRtt) } @@ -22,14 +25,17 @@ func printStats(pinger *probing.Pinger) { func eventLoop(pinger *probing.Pinger) { ticker := time.NewTicker(time.Second * 4) + // Setup signals on term and interrupt. sig := make(chan os.Signal, 1) signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM) for { select { + // Got signal. stop pinger and exit goroutine case <-sig: pinger.Stop() return + // Ticker ticks. print stats. case <-ticker.C: printStats(pinger) } @@ -42,6 +48,7 @@ func main() { os.Exit(1) } + // Setup pinger. pinger, err := probing.NewPinger(os.Args[1]) if err != nil { fmt.Println("Error:", err) @@ -51,8 +58,10 @@ func main() { pinger.SetPrivileged(true) pinger.Interval = time.Second * 2 + // Enter event loop in another goroutine. go eventLoop(pinger) + // Run pinger in main thread. fmt.Println("PING", pinger.Addr()) if err = pinger.Run(); err != nil { fmt.Println("Error:", err)