diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2024-11-26 12:12:43 -0500 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2024-11-26 12:12:43 -0500 |
| commit | 25ca0eaea3f8c83d2a209a4790b27b712bcba09c (patch) | |
| tree | 729b80155e5c953518709add004bde7660ebfadf /server/target.go | |
| parent | ea85258e026265656bdad9fb45d263d9f5e3e05d (diff) | |
| download | soen422-25ca0eaea3f8c83d2a209a4790b27b712bcba09c.zip | |
server: display target humidity
Diffstat (limited to 'server/target.go')
| -rw-r--r-- | server/target.go | 19 |
1 files changed, 7 insertions, 12 deletions
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) } |