From d08d9f99bee4d4e93a8beda780d8e9f6099e32cb Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Sat, 12 Oct 2024 10:59:11 -0500 Subject: ugly but limping along progress Signed-off-by: Jeff Carr --- watchdog.go | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 watchdog.go (limited to 'watchdog.go') diff --git a/watchdog.go b/watchdog.go new file mode 100644 index 0000000..155c79d --- /dev/null +++ b/watchdog.go @@ -0,0 +1,64 @@ +package main + +import ( + "fmt" + "os" + "time" + + "go.wit.com/log" +) + +// scan hypervisors every i seconds +func (h *HyperT) NewWatchdog() { + var delay int = 99 + var i int = delay + h.MyTicker(h.Delay, "new Watchdog() "+h.Hostname, func() { + i += 1 + // check if the env var is set to autoscan + if os.Getenv("WATCHDOG_AUTO_SCAN") != "true" { + if i < delay { + i = delay + } + // print every 'delay' seconds + if i%delay == 0 { + log.Info("Not auto scanning", i, "WATCHDOG_AUTO_SCAN =", os.Getenv("WATCHDOG_AUTO_SCAN")) + } + return + } + if i < delay { + return + } + i = 0 + }) +} + +// timeFunction takes a function as an argument and returns the execution time. +func TimeFunction(f func()) time.Duration { + startTime := time.Now() // Record the start time + f() // Execute the function + return time.Since(startTime) // Calculate the elapsed time +} + +func (h *HyperT) MyTicker(t time.Duration, name string, f func()) { + h.Dog = time.NewTicker(t) + defer h.Dog.Stop() + done := make(chan bool) + /* + // this example would exit/destroy the ticker in 10 seconds + go func() { + time.Sleep(10 * time.Second) + done <- true + }() + */ + for { + select { + case <-done: + fmt.Println("Done!") + return + case t := <-h.Dog.C: + log.Info(name, "Current time: ", t) + h.Scan() + // f() + } + } +} -- cgit v1.2.3