more splitting v01
parent
0311fc56a3
commit
4c7f444887
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,3 +1,5 @@
|
|||
feedback:
|
||||
addr: :17071
|
||||
users:
|
||||
bel:
|
||||
player: 0
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue