fwh_xlog.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // Package fwh_xlog 设备 Xlog 调试开关(基于 fwh_mqtt 一问一答)
  2. package fwh_xlog
  3. import (
  4. "context"
  5. "encoding/json"
  6. "fwh-toolbox-server/repositories/mqtt/fwh_mqtt"
  7. )
  8. const (
  9. cmdTypeXlogReq = 2000 // xlog请求
  10. cmdTypeXlogRes = 2001 // xlog应答
  11. xlogAddr = "18.188.130.67:9081"
  12. )
  13. // EnableXlog 使能站点 xlog,只在生产服使用
  14. func EnableXlog(ctx context.Context, sn string) (string, error) {
  15. client, err := fwh_mqtt.GetClient(fwh_mqtt.EnvProd)
  16. if err != nil {
  17. return "", err
  18. }
  19. msg, err := fwh_mqtt.NewEnvelope(cmdTypeXlogReq, sn, map[string]string{"xlogaddr": xlogAddr})
  20. if err != nil {
  21. return "", err
  22. }
  23. res, err := client.Request(ctx, fwh_mqtt.RequestOpt{
  24. Topic: fwh_mqtt.S2CTopic("debug/" + sn),
  25. Msg: msg,
  26. ResTopic: fwh_mqtt.C2STopic("debug/" + sn),
  27. Match: func(m fwh_mqtt.Message) bool { return m.Envelope.CmdType == cmdTypeXlogRes },
  28. })
  29. if err != nil {
  30. return "", err
  31. }
  32. b, err := json.Marshal(res.Envelope.DataArea)
  33. if err != nil {
  34. return "", err
  35. }
  36. return string(b), nil
  37. }