private async void ProcessBuffer(byte[] buffer) { await ThreadPool.RunAsync(state => { var args = new MqttNetEventArgs { ClientUid = _clientUid }; try { // Process incomming messages args.Message = MqttMessageDeserializer.Deserialize(buffer); if (args.Message is IMqttIdMessage) { var msgWithId = args.Message as IMqttIdMessage; _logger.LogMessage("Socket", LogLevel.Verbose, string.Format("Received message type '{0}', ID={1} from server.", msgWithId.MessageType, msgWithId.MessageId)); } else { _logger.LogMessage("Socket", LogLevel.Verbose, string.Format("SOCKET: Received message type '{0}' from server.", args.Message.MessageType)); } } catch (Exception ex) { args.Exception = ex; } _messageReceivedHandler(args); }); }
private void ProcessBuffer(byte[] buffer) { var t = new Thread(() => { var args = new MqttNetEventArgs { ClientUid = _clientUid }; try { // Process incomming messages args.Message = MqttMessageDeserializer.Deserialize(buffer); string id = "N/A"; if (args.Message is IMqttIdMessage) { id = ((IMqttIdMessage)args.Message).MessageId.ToString(); } _logger.LogMessage("Socket", LogLevel.Verbose, "Received message type " + args.Message.MessageType + ", QOS=" + args.Message.QualityOfService + ", ID=" + id); } catch (Exception ex) { args.Exception = ex; } MessageReceived(args); }); t.Start(); }
private void ProcessBuffer(byte[] buffer, ConnectedClientInfo info) { ThreadPool.QueueUserWorkItem(state => { // When receiving the ConnAck message, we are still using the ConnectionKey param // All other cases we've connected the client and use the ClientUid param var args = new MqttNetEventArgs { ClientUid = info.ClientUid }; try { // Process incomming messages args.Message = MqttMessageDeserializer.Deserialize(buffer); if (args.Message is IMqttIdMessage) { var msgWithId = args.Message as IMqttIdMessage; _logger.LogMessage("Socket", LogLevel.Verbose, string.Format("Received message type '{0}', ID={1}, from client {2}.", msgWithId.MessageType, msgWithId.MessageId, info.ClientUid)); } else { _logger.LogMessage("Socket", LogLevel.Verbose, string.Format("Received message type '{0}' from client {1}.", args.Message.MessageType, info.ClientUid)); } } catch (Exception ex) { var outer = new Exception(string.Format("Error deserializing message from network buffer. Buffer may be corrupt. Details: {0}", ex.Message), ex); args.Exception = outer; _logger.LogMessage("Socket", LogLevel.Error, outer.Message); } if (_messageReceivedHandler != null) { _messageReceivedHandler(args); } }); }