Example #1
0
        private void SocketMessageReceived(MqttNetEventArgs args)
        {
            if (args.Message != null)
            {
                Logger.LogMessage("Protocol", LogLevel.Verbose, "Protocol notified of message received " + args.Message.MessageType + " Client Identifier=" + args.ClientUid);
                OnMessageReceived(args);

                switch (args.Message.MessageType)
                {
                case MessageType.ConnAck:
                    args.EventData = _messageStore.Remove(args.Message, args.ClientUid);
                    var conAck = args.Message as MqttConnectAckMessage;
                    if (conAck != null && conAck.ConnectReturnCode != ConnectReturnCode.Accepted)
                    {
                        Socket.Disconnect(args.ClientUid);
                    }
                    FireConnectComplete(args);
                    break;

                case MessageType.SubAck:
                    args.EventData = _messageStore.Remove(args.Message, args.ClientUid);
                    FireSubscribeMessageComplete(args);
                    break;

                case MessageType.PubAck:
                case MessageType.PubComp:
                case MessageType.UnsubAck:
                    args.EventData = _messageStore.Remove(args.Message, args.ClientUid);
                    FireSendMessageComplete(args);
                    break;

                case MessageType.Publish:
                    DoClientPublishWorkflow(args);
                    break;

                case MessageType.PubRec:
                    DoClientPublishRecWorkflow(args);
                    break;

                case MessageType.PubRel:
                    DoClientPubRelWorkflow(args);
                    break;

                case MessageType.PingResp:
                    args.EventData = _messageStore.Remove(args.Message, args.ClientUid);
                    FireSendMessageComplete(args);
                    break;
                }
            }
            else if (args.Exception != null)
            {
                Logger.LogException("Protocol", LogLevel.Verbose, "Exception occured while receiving message from server.", args.Exception);
            }
        }