定义上行事件监听器

This commit is contained in:
2025-09-15 22:01:00 +08:00
parent 6131f38232
commit 621c45f9c0
4 changed files with 89 additions and 17 deletions

View File

@@ -0,0 +1,51 @@
package transport
import (
"io"
"net/http"
"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs"
)
// ChirpStackListener 是一个监听器, 用于监听ChirpStack反馈的设备上行事件
type ChirpStackListener struct {
logger *logs.Logger
}
func NewChirpStackListener(logger *logs.Logger) *ChirpStackListener {
return &ChirpStackListener{
logger: logger,
}
}
func (c *ChirpStackListener) Handler() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
b, err := io.ReadAll(r.Body)
if err != nil {
c.logger.Errorf("读取请求体失败: %v", err)
// TODO 直接崩溃不太合适
panic(err)
}
event := r.URL.Query().Get("event")
switch event {
case "up": // 链路上行事件
err = c.up(b)
if err != nil {
c.logger.Errorf("处理链路上行事件失败: %v", err)
// TODO 直接崩溃不太合适
panic(err)
}
default:
c.logger.Errorf("未知的ChirpStack事件: %s", event)
}
}
}
// up 处理链路上行事件
func (c *ChirpStackListener) up(data []byte) error {
panic("implement me")
}

View File

@@ -0,0 +1,8 @@
package transport
import "net/http"
// ListenHandler 是一个监听器, 用于监听设备上行事件
type ListenHandler interface {
Handler() http.HandlerFunc
}