private void ReadFixedHeader(byte fixedHeader) { _retain = (fixedHeader & 0x01) != 0; _qosLevel = (QoSLevel)((fixedHeader & 0x06) >> 1); _dup = (fixedHeader & 0x08) != 0; _messageType = (MqttMessageType)((fixedHeader & 0xf0) >> 4); }
public MqttMessage(MqttMessageType messageType, QoSLevel qosLevel, bool retain, bool dup) { _qosLevel = qosLevel; _messageType = messageType; _retain = retain; _dup = dup; }
public MqttMessage(string userName, string messageBrokerUserName, string payload, MqttMessageType type) { UserName = userName; MessageBrokerUserName = messageBrokerUserName; Payload = payload; Type = type; }
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); }
/// <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); }
/* * 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; }
/// <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); }
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); }