more splitting v01

master
bel 2023-03-26 08:38:24 -06:00
parent 0311fc56a3
commit 4c7f444887
3 changed files with 60 additions and 53 deletions

View File

@ -0,0 +1,58 @@
package v01
import (
"io"
"log"
"mayhem-party/src/device/input/wrap"
"net/http"
"sync"
"syscall"
)
func (v01 *V01) listen() {
if v01.cfg.Feedback.Addr == "" {
return
}
mutex := &sync.RWMutex{}
s := &http.Server{
Addr: v01.cfg.Feedback.Addr,
Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodGet {
mutex.RLock()
defer mutex.RUnlock()
} else {
mutex.Lock()
defer mutex.Unlock()
}
if r.Method == http.MethodGet {
r = r.WithContext(v01.ctx)
user, ok := v01.cfg.Users[r.URL.Query().Get("user")]
if !ok {
user = v01.cfg.Users["broadcast"]
}
w.Write([]byte(user.Message))
} else if r.URL.Path == "/broadcast" {
b, _ := io.ReadAll(r.Body)
v := v01.cfg.Users["broadcast"]
v.Message = string(b)
v01.cfg.Users["broadcast"] = v
}
if _, ok := r.URL.Query()["refresh"]; ok {
select {
case wrap.ChSigUsr1 <- syscall.SIGUSR1:
default:
}
}
}),
}
go func() {
<-v01.ctx.Done()
log.Println("closing v01 server")
s.Close()
}()
log.Println("starting v01 server")
if err := s.ListenAndServe(); err != nil && v01.ctx.Err() == nil {
log.Println("err with v01 server", err)
panic(err)
}
}

View File

@ -1,3 +1,5 @@
feedback:
addr: :17071
users:
bel:
player: 0

View File

@ -3,16 +3,11 @@ package v01
import (
"context"
"encoding/json"
"io"
"io/ioutil"
"log"
"mayhem-party/src/device/input/button"
"mayhem-party/src/device/input/raw"
"mayhem-party/src/device/input/wrap"
"net/http"
"os"
"sync"
"syscall"
"time"
"gopkg.in/yaml.v2"
@ -66,54 +61,6 @@ func NewV01(ctx context.Context, src raw.Raw) *V01 {
return result
}
func (v01 *V01) listen() {
if v01.cfg.Feedback.Addr == "" {
return
}
mutex := &sync.RWMutex{}
s := &http.Server{
Addr: v01.cfg.Feedback.Addr,
Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodGet {
mutex.RLock()
defer mutex.RUnlock()
} else {
mutex.Lock()
defer mutex.Unlock()
}
if r.Method == http.MethodGet {
r = r.WithContext(v01.ctx)
user, ok := v01.cfg.Users[r.URL.Query().Get("user")]
if !ok {
user = v01.cfg.Users["broadcast"]
}
w.Write([]byte(user.Message))
} else if r.URL.Path == "/broadcast" {
b, _ := io.ReadAll(r.Body)
v := v01.cfg.Users["broadcast"]
v.Message = string(b)
v01.cfg.Users["broadcast"] = v
}
if _, ok := r.URL.Query()["refresh"]; ok {
select {
case wrap.ChSigUsr1 <- syscall.SIGUSR1:
default:
}
}
}),
}
go func() {
<-v01.ctx.Done()
log.Println("closing v01 server")
s.Close()
}()
log.Println("starting v01 server")
if err := s.ListenAndServe(); err != nil && v01.ctx.Err() == nil {
log.Println("err with v01 server", err)
panic(err)
}
}
func (v01 *V01) CloseWrap() raw.Raw {
v01.can()
return v01.src