Files
nbi_alarm/omc/omc_pack.go
2023-08-21 11:00:22 +08:00

47 lines
870 B
Go

package omc
import (
"errors"
"fmt"
"strings"
)
type MsgBody struct {
UID string
RawData []byte
MsgName string
Msg map[string]string
Keys []string
}
// Decode
// reqLoginAlarm;user=yiy;key=qw#$@;type=msg
func (o *MsgBody) Decode() error {
multi := strings.Split(string(o.RawData), ";")
if len(multi) < 1 {
return errors.New("invalid msg body")
}
for i := 1; i < len(multi); i++ {
m := strings.Split(multi[i], "=")
if len(m) != 2 {
return errors.New("invalid msg body")
}
o.Msg[m[0]] = m[1]
}
return nil
}
// Pack
// reqLoginAlarm;user=yiy;key=qw#$@;type=msg
func (o *MsgBody) Pack() error {
var multi []string
multi = append(multi, o.MsgName)
for _, key := range o.Keys {
item := fmt.Sprintf("%s=%s", key, o.Msg[key])
multi = append(multi, item)
}
raw := strings.Join(multi, ";")
o.RawData = []byte(raw)
return nil
}