class MQTT::V5::Ack

Overview

PUBACK, PUBREC, PUBREL and PUBCOMP.

NOTE : MQTT-3.4.2.1, the reason code and the property section are both omitted when the reason is success and there are no properties. Nothing in the packet says so — the remaining length is what tells you, which is exactly what onlyif needs

Included Modules

Defined in:

mqtt/v5/ack.cr

Constant Summary

AFTER_DESERIALIZE = [] of Nil

PUBACK, PUBREC, PUBREL and PUBCOMP.

NOTE : MQTT-3.4.2.1, the reason code and the property section are both omitted when the reason is success and there are no properties. Nothing in the packet says so — the remaining length is what tells you, which is exactly what onlyif needs

ALLOWED_PROPERTIES = [PropertyId::ReasonString, PropertyId::UserProperty]
BEFORE_SERIALIZE = [] of Nil

PUBACK, PUBREC, PUBREL and PUBCOMP.

NOTE : MQTT-3.4.2.1, the reason code and the property section are both omitted when the reason is success and there are no properties. Nothing in the packet says so — the remaining length is what tells you, which is exactly what onlyif needs

ENDIAN = ["big"]

PUBACK, PUBREC, PUBREL and PUBCOMP.

NOTE : MQTT-3.4.2.1, the reason code and the property section are both omitted when the reason is success and there are no properties. Nothing in the packet says so — the remaining length is what tells you, which is exactly what onlyif needs

KLASS_NAME = [MQTT::V5::Ack]

PUBACK, PUBREC, PUBREL and PUBCOMP.

NOTE : MQTT-3.4.2.1, the reason code and the property section are both omitted when the reason is success and there are no properties. Nothing in the packet says so — the remaining length is what tells you, which is exactly what onlyif needs

PARTS = [{type: "basic", name: message_id, cls: UInt16, onlyif: nil, verify: nil, value: nil, endian: nil}, {type: "basic", name: raw_reason_code, cls: UInt8, onlyif: -> do packet_length > 2 end, verify: nil, value: nil, endian: nil}, {type: "basic", name: properties, cls: MQTT::V5::Properties, onlyif: -> do packet_length > 3 end, verify: nil, value: nil}] of Nil

PUBACK, PUBREC, PUBREL and PUBCOMP.

NOTE : MQTT-3.4.2.1, the reason code and the property section are both omitted when the reason is success and there are no properties. Nothing in the packet says so — the remaining length is what tells you, which is exactly what onlyif needs

REMAINING = [] of Nil

PUBACK, PUBREC, PUBREL and PUBCOMP.

NOTE : MQTT-3.4.2.1, the reason code and the property section are both omitted when the reason is success and there are no properties. Nothing in the packet says so — the remaining length is what tells you, which is exactly what onlyif needs

Class Method Summary

Instance Method Summary

Instance methods inherited from module MQTT::V5::ReasonCoded

error? : Bool error?, reason_code : ReasonCode | Nil reason_code, reason_code=(code : ReasonCode) : ReasonCode reason_code=, reason_description : String reason_description, success? : Bool success?

Instance methods inherited from class MQTT::Header

__format__ : IO::ByteFormat __format__, duplicate : Bool duplicate, duplicate=(duplicate : UInt8)
duplicate=(value : Bool)
duplicate=
, fixed_header_size : Int32 fixed_header_size, id : MQTT::RequestType id, id=(id : UInt8)
id=(value : MQTT::RequestType)
id=
, packet_length : UInt32 packet_length, packet_length=(size : UInt32) : UInt32 packet_length=, qos : MQTT::QoS qos, qos=(qos : UInt8)
qos=(value : MQTT::QoS)
qos=
, qos? qos?, retain : Bool retain, retain=(retain : UInt8)
retain=(value : Bool)
retain=
, variable_length1 : UInt8 variable_length1, variable_length1=(value : UInt8) : UInt8 variable_length1=, variable_length2 : UInt8 variable_length2, variable_length2=(value : UInt8) : UInt8 variable_length2=, variable_length3 : UInt8 variable_length3, variable_length3=(value : UInt8) : UInt8 variable_length3=, variable_length4 : UInt8 variable_length4, variable_length4=(value : UInt8) : UInt8 variable_length4=

Class methods inherited from class MQTT::Header

bit_fields bit_fields

Class Method Detail

def self.bit_fields #

PUBACK, PUBREC, PUBREL and PUBCOMP.

NOTE : MQTT-3.4.2.1, the reason code and the property section are both omitted when the reason is success and there are no properties. Nothing in the packet says so — the remaining length is what tells you, which is exactly what onlyif needs


[View source]

Instance Method Detail

def __format__ : IO::ByteFormat #

A group or bit_field captures the endianness at its declaration point, so declaring endian after one would silently leave it system-endian. Fail loudly.


[View source]
def add_user_property(key : String, value : String) : Nil #

[View source]
def calculate_length : UInt32 #

[View source]
def message_id : UInt16 #

def message_id=(message_id : UInt16) #

def properties : Properties #

def properties=(properties : Properties) #

def raw_reason_code : UInt8 #

def raw_reason_code=(raw_reason_code : UInt8) #

def reason_string : String | Nil #

[View source]
def reason_string=(value : String | Nil) #

[View source]
def user_properties : Array(Tuple(String, String)) #

[View source]
def validate! : self #

[View source]