| 36 | } |
| 37 | |
| 38 | func (h *handlerDownside) OnMessage(msg interface{}) error { |
| 39 | m := msg.(*v1.Message) |
| 40 | h.log.Debug("engine downside msg", log.Any("msg", m)) |
| 41 | |
| 42 | // Todo : improve, only the core module supports remote debugging |
| 43 | if os.Getenv(context.KeySvcName) != v1.BaetylCore { |
| 44 | return nil |
| 45 | } |
| 46 | |
| 47 | key := fmt.Sprintf("%s_%s_%s_%s", m.Metadata["namespace"], m.Metadata["name"], m.Metadata["container"], m.Metadata["token"]) |
| 48 | downside := fmt.Sprintf("%s_%s", key, "down") |
| 49 | h.log.Debug("engine pub downside topic", log.Any("topic", downside)) |
| 50 | |
| 51 | switch m.Kind { |
| 52 | case v1.MessageCMD: |
| 53 | switch m.Metadata["cmd"] { |
| 54 | case v1.MessageCommandConnect: |
| 55 | err := h.connect(key, m) |
| 56 | if err != nil { |
| 57 | return errors.Trace(err) |
| 58 | } |
| 59 | case v1.MessageCommandLogs: |
| 60 | err := h.viewLogs(key, m) |
| 61 | if err != nil { |
| 62 | return errors.Trace(err) |
| 63 | } |
| 64 | case v1.MessageCommandDisconnect: |
| 65 | err := h.disconnect(key, m) |
| 66 | if err != nil { |
| 67 | return errors.Trace(err) |
| 68 | } |
| 69 | case v1.MessageCommandNodeLabel: |
| 70 | err := h.nodeLabel(key, m) |
| 71 | if err != nil { |
| 72 | return errors.Trace(err) |
| 73 | } |
| 74 | case v1.MessageCommandMultiNodeLabels: |
| 75 | err := h.labelMultiNodes(key, m) |
| 76 | if err != nil { |
| 77 | return err |
| 78 | } |
| 79 | case v1.MessageRPC: |
| 80 | err := h.rpc(key, m) |
| 81 | if err != nil { |
| 82 | return errors.Trace(err) |
| 83 | } |
| 84 | case v1.MessageAgent: |
| 85 | err := h.agentControl(key, m) |
| 86 | if err != nil { |
| 87 | return errors.Trace(err) |
| 88 | } |
| 89 | case v1.MessageRPCMqtt: |
| 90 | err := h.rpcMqtt(key, m) |
| 91 | if err != nil { |
| 92 | return errors.Trace(err) |
| 93 | } |
| 94 | default: |
| 95 | h.log.Debug("unknown command", log.Any("cmd", m.Metadata["cmd"])) |