示例#1
0
 private void ReadFixedHeader(byte fixedHeader)
 {
     _retain = (fixedHeader & 0x01) != 0;
     _qosLevel = (QoSLevel)((fixedHeader & 0x06) >> 1);
     _dup = (fixedHeader & 0x08) != 0;
     _messageType = (MqttMessageType)((fixedHeader & 0xf0) >> 4);
 }
示例#2
0
 public MqttMessage(MqttMessageType messageType, QoSLevel qosLevel, bool retain, bool dup)
 {
     _qosLevel    = qosLevel;
     _messageType = messageType;
     _retain      = retain;
     _dup         = dup;
 }
示例#3
0
 public MqttMessage(MqttMessageType messageType, QoSLevel qosLevel, bool retain, bool dup)
 {
     _qosLevel = qosLevel;
     _messageType = messageType;
     _retain = retain;
     _dup = dup;
 }
示例#4
0
 public MqttMessage(string userName, string messageBrokerUserName, string payload, MqttMessageType type)
 {
     UserName = userName;
     MessageBrokerUserName = messageBrokerUserName;
     Payload = payload;
     Type    = type;
 }
示例#5
0
        public static MqttMessage DecodeMessage(byte[] message)
        {
            byte fixedHeader = message[0];
            byte msgType     = (byte)(fixedHeader >> 0x04);

            MqttMessageType messageType = (MqttMessageType)msgType;
            MqttMessage     mqttMessage = messageType switch
            {
                MqttMessageType.CONNECT => new ConnectMessage(),
                MqttMessageType.CONNACK => new ConnectAckMessage(),
                MqttMessageType.PUBLISH => new PublishMessage(),
                MqttMessageType.PUBACK => new PublishAckMessage(),
                MqttMessageType.PUBREC => new PublishAckMessage(),
                MqttMessageType.PUBREL => new PublishAckMessage(),
                MqttMessageType.PUBCOMP => new PublishAckMessage(),
                MqttMessageType.SUBSCRIBE => new SubscribeMessage(),
                MqttMessageType.SUBACK => new SubscriptionAckMessage(),
                MqttMessageType.UNSUBSCRIBE => new UnsubscribeMessage(),
                MqttMessageType.UNSUBACK => new UnsubscribeAckMessage(),
                MqttMessageType.PINGREQ => new PingRequestMessage(),
                MqttMessageType.PINGRESP => new PingResponseMessage(),
                MqttMessageType.DISCONNECT => new DisconnectMessage(),
                _ => throw new InvalidOperationException("Unknown message type.")
            };

            mqttMessage.Decode(message);
            return(mqttMessage);
        }
示例#6
0
 /// <summary>
 /// UnRegisters for the receipt of messages when they arrive.
 /// </summary>
 /// <param name="msgType">The message type to register for.</param>
 /// <param name="msgProcessorCallback">The MSG processor callback.</param>
 public void UnRegisterForMessage(MqttMessageType msgType, Func<MqttMessage, bool> msgProcessorCallback)
 {
     messageProcessorRegistry[msgType].Remove(msgProcessorCallback);
 }
示例#7
0
        /*
         * This here class contains some experimental Fluent interface for building
         * an MqttHeader. This is a curiosity at the moment.
         */

        /// <summary>
        ///     Sets the type of the message identified in the header.
        /// </summary>
        /// <param name="messageType">The type of message.</param>
        /// <returns>An instance of the header.</returns>
        public MqttHeader AsType(MqttMessageType messageType) {
            this.MessageType = messageType;
            return this;
        }
示例#8
0
        /// <summary>
        /// Sets the <see cref="MqttMessageType"/> for this <see cref="MqttMessage"/>.
        /// </summary>
        /// <param name="messageType"></param>
        /// <returns></returns>
        public MqttMessage SetMessageType(MqttMessageType messageType)
        {
            this.messageType = messageType;

            return(this);
        }
示例#9
0
        public static MqttMessage DecodeMessage(byte[] message)
        {
            byte fixedHeader = message[0];
            byte msgType     = (byte)(fixedHeader >> 0x04);

            MqttMessageType messageType = (MqttMessageType)msgType;

            MqttMessage mqttMessage = null;

            switch (messageType)
            {
            case MqttMessageType.CONNECT:
                mqttMessage = new ConnectMessage();
                break;

            case MqttMessageType.CONNACK:
                mqttMessage = new ConnectAckMessage();
                break;

            case MqttMessageType.PUBLISH:
                mqttMessage = new PublishMessage();
                break;

            case MqttMessageType.PUBACK:
                mqttMessage = new PublishAckMessage();
                break;

            case MqttMessageType.PUBREC:
                mqttMessage = new PublishAckMessage();
                break;

            case MqttMessageType.PUBREL:
                mqttMessage = new PublishAckMessage();
                break;

            case MqttMessageType.PUBCOMP:
                mqttMessage = new PublishAckMessage();
                break;

            case MqttMessageType.SUBSCRIBE:
                mqttMessage = new SubscribeMessage();
                break;

            case MqttMessageType.SUBACK:
                mqttMessage = new SubscriptionAckMessage();
                break;

            case MqttMessageType.UNSUBSCRIBE:
                mqttMessage = new UnsubscribeMessage();
                break;

            case MqttMessageType.UNSUBACK:
                mqttMessage = new UnsubscribeAckMessage();
                break;

            case MqttMessageType.PINGREQ:
                mqttMessage = new PingRequestMessage();
                break;

            case MqttMessageType.PINGRESP:
                mqttMessage = new PingResponseMessage();
                break;

            case MqttMessageType.DISCONNECT:
                mqttMessage = new DisconnectMessage();
                break;

            default:
                throw new InvalidOperationException("Unknown message type.");
            }

            mqttMessage.Decode(message);
            return(mqttMessage);
        }