mirror of
https://gitee.com/XM-GO/PandaX.git
synced 2026-04-23 02:48:34 +08:00
[feat]添加规则引擎debug功能
This commit is contained in:
@@ -3,6 +3,7 @@ package message
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/google/uuid"
|
||||
"github.com/sirupsen/logrus"
|
||||
"time"
|
||||
)
|
||||
|
||||
@@ -26,30 +27,59 @@ const (
|
||||
MONITOR = "MONITOR" //监控
|
||||
)
|
||||
|
||||
const (
|
||||
DEBUGIN = "In"
|
||||
DEBUGOUT = "Out"
|
||||
)
|
||||
|
||||
type Msg map[string]interface{}
|
||||
type Metadata map[string]interface{}
|
||||
|
||||
type Message struct {
|
||||
Id string //uuid 消息Id
|
||||
Ts time.Time //时间戳
|
||||
MsgType string //消息类型, attributes(参数),telemetry(遥测),Connect连接事件
|
||||
User string //客户 设备发布人 设备所有者
|
||||
Msg Msg //数据 数据结构JSON 设备原始数据 msg
|
||||
Metadata Metadata //消息的元数据 包括设备Id,设备类型,产品ID等
|
||||
Id string //uuid 消息Id
|
||||
Ts time.Time //时间戳
|
||||
MsgType string //消息类型, attributes(参数),telemetry(遥测),Connect连接事件
|
||||
User string //客户 设备发布人 设备所有者
|
||||
Msg Msg //数据 数据结构JSON 设备原始数据 msg
|
||||
Metadata Metadata //消息的元数据 包括设备Id,设备类型,产品ID等
|
||||
DeBugChan chan DebugData
|
||||
EndDeBugChan chan struct{}
|
||||
}
|
||||
|
||||
// NewMessage ...
|
||||
func NewMessage(user, messageType string, msg Msg, metadata Metadata) *Message {
|
||||
return &Message{
|
||||
Id: uuid.New().String(),
|
||||
Ts: time.Now(),
|
||||
User: user,
|
||||
MsgType: messageType,
|
||||
Msg: msg,
|
||||
Metadata: metadata,
|
||||
Id: uuid.New().String(),
|
||||
Ts: time.Now(),
|
||||
User: user,
|
||||
MsgType: messageType,
|
||||
Msg: msg,
|
||||
Metadata: metadata,
|
||||
DeBugChan: make(chan DebugData, 100),
|
||||
EndDeBugChan: make(chan struct{}),
|
||||
}
|
||||
}
|
||||
|
||||
func (t *Message) Debug(nodeId, nodeName, debugType, error string) {
|
||||
if debugType == DEBUGIN {
|
||||
logrus.Infof("%s handle message '%s'", nodeName, t.MsgType)
|
||||
}
|
||||
debug := DebugData{
|
||||
Ts: time.Now().Format("2006-01-02 15:04:05.000"),
|
||||
NodeId: nodeId,
|
||||
MsgId: t.Id,
|
||||
DebugType: debugType,
|
||||
MsgType: t.MsgType,
|
||||
Msg: t.Msg,
|
||||
Metadata: t.Metadata,
|
||||
Error: error,
|
||||
}
|
||||
if deviceName, ok := t.Metadata.GetValue("deviceName").(string); ok {
|
||||
debug.DeviceName = deviceName
|
||||
}
|
||||
t.DeBugChan <- debug
|
||||
}
|
||||
|
||||
func (t *Message) GetAllMap() map[string]interface{} {
|
||||
data := make(map[string]interface{})
|
||||
for msgKey, msgValue := range t.Msg {
|
||||
|
||||
Reference in New Issue
Block a user