func controler(pcapreader *pcap.Pcap, quit_chan chan bool) { timebegin := time.Now() MAIN: for { select { case <-quit_chan: fmt.Print("\nEND\n") fmt.Printf("ETH routines: %d\n", len(data.ETHMAP.StatsChans)) for _, chans := range data.ETHMAP.StatsChans { chans.Control <- "<kill>" } fmt.Printf("IP routines: %d\n", len(data.IPv4MAP.StatsChans)) for _, chans := range data.IPv4MAP.StatsChans { chans.Control <- "<kill>" } fmt.Printf("TCP routines: %d\n", len(data.TcpMAP.StatsChans)) for _, chans := range data.TcpMAP.StatsChans { chans.Control <- "<kill>" } break MAIN case <-clock.Clock.DumpChan: dumpbegin := time.Now() pcapreader.Paused = true dump.WriteEthernet(CONFIG, data.ETHMAP) dump.WriteIpv4(CONFIG, data.IPv4MAP) dump.WriteTcp(CONFIG, data.TcpMAP) pcapreader.Paused = false if CONFIG["debug"] == "true" { fmt.Println("<< END DUMPS ", time.Now().Sub(dumpbegin), clock.Clock.Get(), "\n") } } } fmt.Println("controler ends, total time:", time.Now().Sub(timebegin)) }