1
0
Fork 0
mirror of https://github.com/pnx/pinger.git synced 2026-06-16 03:24:54 +02:00

main.go: Adding some documentation.

This commit is contained in:
Henrik Hautakoski 2023-03-12 14:59:47 +01:00
parent 36d6e4f8d6
commit aed415a531

View file

@ -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)