From 25ca0eaea3f8c83d2a209a4790b27b712bcba09c Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Tue, 26 Nov 2024 12:12:43 -0500 Subject: server: display target humidity --- server/target.go | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) (limited to 'server/target.go') diff --git a/server/target.go b/server/target.go index 4c58f1d..2d7ca80 100644 --- a/server/target.go +++ b/server/target.go @@ -2,18 +2,17 @@ package main import ( "fmt" + "github.com/sam-rba/share" "log" "net/http" "strconv" - "sync" ) type TargetHumidityHandler struct { - mu sync.Mutex - target Humidity + target share.Val[Humidity] } -func (h *TargetHumidityHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { +func (h TargetHumidityHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { log.Println(r.Method, r.URL) switch r.Method { case http.MethodGet: @@ -26,20 +25,16 @@ func (h *TargetHumidityHandler) ServeHTTP(w http.ResponseWriter, r *http.Request } } -func (h *TargetHumidityHandler) get(w http.ResponseWriter, r *http.Request) { - h.mu.Lock() - defer h.mu.Unlock() - fmt.Fprintf(w, "%.2f", h.target) +func (h TargetHumidityHandler) get(w http.ResponseWriter, r *http.Request) { + fmt.Fprintf(w, "%.2f", h.target.Get()) } -func (h *TargetHumidityHandler) post(w http.ResponseWriter, r *http.Request) { +func (h TargetHumidityHandler) post(w http.ResponseWriter, r *http.Request) { target, err := strconv.ParseFloat(r.URL.RawQuery, 32) if err != nil { badRequest(w, "invalid humidity: '%s'", r.URL.RawQuery) return } - h.mu.Lock() - defer h.mu.Unlock() - h.target = Humidity(target) + h.target.Set <- Humidity(target) } -- cgit v1.2.3