From 627cd4751901ff3000b5ed93ded49ac20fd9be1b Mon Sep 17 00:00:00 2001
From: Kevin Lyda <kevin@ie.suberic.net>
Date: Sat, 11 Feb 2017 17:14:24 +0000
Subject: [PATCH] Add a sleep cycle param.

---
 cmd/gqgmcd/main.go        | 3 ++-
 config/config.go          | 2 ++
 server/metrics/metrics.go | 4 ++--
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/cmd/gqgmcd/main.go b/cmd/gqgmcd/main.go
index 62892a5..ca140a5 100644
--- a/cmd/gqgmcd/main.go
+++ b/cmd/gqgmcd/main.go
@@ -23,6 +23,7 @@ var device = flag.String("device", "/dev/gqgmc", "Device for Geiger Counter")
 var model = flag.String("model", "gqgmc", "Model of Geiger Counter")
 var templateDir = flag.String("template-dir", "templates", "Template directory")
 var staticDir = flag.String("static-dir", "static", "Static files directory")
+var sleepCycle = flag.Int64("sleep-cycle", 5, "Seconds to sleep per cycle.")
 var cfg = flag.String("config", "gqgmc.conf", "Config file")
 
 func main() {
@@ -39,6 +40,6 @@ func main() {
 	p.Register()
 	m := metrics.Register(gc)
 
-	go m.Gather()
+	go m.Gather(c.SleepCycle)
 	log.Fatal(http.ListenAndServe(c.ListenAddress, nil))
 }
diff --git a/config/config.go b/config/config.go
index 22a0be3..ee48247 100644
--- a/config/config.go
+++ b/config/config.go
@@ -19,6 +19,7 @@ type Config struct {
 	Model         string `mapstructure:"model"`
 	TemplateDir   string `mapstructure:"template_dir"`
 	StaticDir     string `mapstructure:"static_dir"`
+	SleepCycle    int64  `mapstructure:"sleep_cycle"`
 }
 
 func setDefaults() {
@@ -27,6 +28,7 @@ func setDefaults() {
 	viper.BindPFlag("model", pflag.Lookup("model"))
 	viper.BindPFlag("template_dir", pflag.Lookup("template-dir"))
 	viper.BindPFlag("static_dir", pflag.Lookup("static-dir"))
+	viper.BindPFlag("sleep_cycle", pflag.Lookup("sleep-cycle"))
 }
 
 // ReadConfig reads the client configuration from a file into a Config struct.
diff --git a/server/metrics/metrics.go b/server/metrics/metrics.go
index cc7368f..ff43209 100644
--- a/server/metrics/metrics.go
+++ b/server/metrics/metrics.go
@@ -69,7 +69,7 @@ func Register(gc geiger.Counter) *Metrics {
 }
 
 // Gather loop to gather metrics
-func (m *Metrics) Gather() {
+func (m *Metrics) Gather(sleep int64) {
 	var (
 		cpm, cps uint16
 		volts    int16
@@ -97,6 +97,6 @@ func (m *Metrics) Gather() {
 			m.volts.WithLabelValues(m.gc.Serial()).Observe(float64(volts))
 		}
 		m.errs.WithLabelValues(m.gc.Serial()).Set(float64(errCt))
-		time.Sleep(5 * time.Second)
+		time.Sleep(time.Duration(sleep) * time.Second)
 	}
 }
-- 
GitLab