public void OnMessageReceived(RawMessage message)
        {
            string topic = message.Topic;

            try
            {
                RawMessageListener listener = null;
                if (rawMessageListenerDic.ContainsKey(topic))
                {
                    listener = rawMessageListenerDic[topic];
                }

                if (listener != null)
                {
                    listener.OnMessageReceived(message);

                    return;
                }

                if (topic.Contains("/messages/down"))
                {
                    OnDeviceMessage(message);
                }
                else if (topic.Contains("sys/commands/request_id"))
                {
                    OnCommand(message);
                }
                else if (topic.Contains("/sys/properties/set/request_id"))
                {
                    OnPropertiesSet(message);
                }
                else if (topic.Contains("/sys/properties/get/request_id"))
                {
                    OnPropertiesGet(message);
                }
                else if (topic.Contains("/sys/events/down"))
                {
                    OnEvent(message);
                }
                else if (topic.Contains("/huawei/v1/devices") && topic.Contains("/command/"))
                {
                    OnCommandV3(message);
                }
                else if (topic.Contains("/sys/shadow/get/response"))
                {
                    OnShadowCommand(message);
                }
                else if (topic.Contains("/user/"))
                {
                    OnCustomCommand(message);
                }
                else
                {
                    Log.Error("unknown topic: " + topic);
                }
            }
            catch (Exception ex)
            {
                Log.Error("SDK.Error: message received error, the topic is " + topic);
            }
        }
 public MqttConnection(ClientConf clientConf, RawMessageListener rawMessageListener, ConnectListener connectListener)
 {
     this.clientConf         = clientConf;
     this.rawMessageListener = rawMessageListener;
     this.connectListener    = connectListener;
 }