public void Start()
 {
     if (m_MessageQueue == null)
     {
         InvalidOperationException ex =
             new InvalidOperationException("This object has not been initialized with a ConcurrentQueue<MqttMessage> messageQueue. "
                                           + "Before you can call Start() you have to provide the message queue."
                                           );
         Logger.Error("No message queue available. Unable to start.", ex);
         throw ex;
     }
     m_Stop = false;
     while (!m_Stop)
     {
         MqttMessage msg;
         if (m_MessageQueue.TryDequeue(out msg))
         {
             if (Logger.IsDebugEnabled)
             {
                 Logger.Debug("Starting to decode message...");
             }
             Logger.Info($"Topic: {msg.Topic}");
             NetworkMessage decodedMessage = null;
             try
             {
                 decodedMessage = ParseBinaryMessage(msg.Payload);
             }
             catch (Exception e)
             {
                 if (Debugger.IsAttached)
                 {
                     Debugger.Break();
                 }
                 Logger.Error($"Error while decoding message: {e}");
                 Console.WriteLine($"Error while decoding message: {e}");
             }
             if (decodedMessage != null)
             {
                 MessageDecoded?.Invoke(this, new MessageDecodedEventArgs(decodedMessage, msg.Topic));
             }
         }
         else
         {
             Thread.Sleep(10);
         }
     }
 }
Example #2
0
 protected virtual void OnMessageDecoded(MessageEventArgs args)
 {
     MessageDecoded?.Invoke(this, args);
 }