summaryrefslogtreecommitdiffstats
path: root/server/target.go
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-11-26 12:12:43 -0500
committerSam Anthony <sam@samanthony.xyz>2024-11-26 12:12:43 -0500
commit25ca0eaea3f8c83d2a209a4790b27b712bcba09c (patch)
tree729b80155e5c953518709add004bde7660ebfadf /server/target.go
parentea85258e026265656bdad9fb45d263d9f5e3e05d (diff)
downloadsoen422-25ca0eaea3f8c83d2a209a4790b27b712bcba09c.zip
server: display target humidity
Diffstat (limited to 'server/target.go')
-rw-r--r--server/target.go19
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)
}