package gui import ( "time" "go.wit.com/log" ) var watchtime time.Duration = 100 // in tenths of seconds /* This program sits here. If you exit here, the whole thing will os.Exit() TODO: use Ticker This goroutine can be used like a watchdog timer */ func Watchdog() { var i = 1 /* for { log.Verbose("gui.Watchdog() is alive. give me something to do.", i) time.Sleep(watchtime * time.Second / 10) } */ // check the four known things to see if they are all WORKING myTicker(3*time.Second, "WATCHDOG", func() { i += 1 log.Log(INFO, "myTicker() ticked", i) }) } func myTicker(t time.Duration, name string, f func()) { ticker := time.NewTicker(t) defer ticker.Stop() done := make(chan bool) /* go func() { time.Sleep(10 * time.Second) done <- true }() */ for { select { case <-done: log.Warn("gui.Watchdog() Done!") return case t := <-ticker.C: log.Log(INFO, name, "Current time: ", t) f() } } }