func Poller(lock *sync.Mutex, ss *spacesaving.Rate, pc *pcap.Pcap) { w := bufio.NewWriter(os.Stdout) for _ = range time.Tick(3 * time.Second) { stat, _ := pc.Getstats() lock.Lock() fmt.Fprintf(w, "\033c") elements := ss.GetAll(time.Now()) for i, e := range elements { fmt.Fprintf(w, "%60s\t%f\t%f\n", e.Key, e.LoRate, e.HiRate) if i > 40 { break } } fmt.Fprintf(w, "\n") fmt.Fprintf(w, "received:%v dropped:%v/%v (software/interface)\n", stat.PacketsReceived, stat.PacketsDropped, stat.PacketsIfDropped) w.Flush() lock.Unlock() } }