def test_marshal_demarshal_tiny(self): fh1 = MQTTFixedHeader(CONNECT, 0, 128) fh1_bytes = fh1.to_bytes() fh2 = MQTTFixedHeader.from_bytes(fh1_bytes) self.assertEqual(fh1.remaining_length, fh2.remaining_length) self.assertEqual(fh1_bytes, fh2.to_bytes())
def __init__(self, fixed: MQTTFixedHeader=None, variable_header: ConnackVariableHeader=None, payload=None): if fixed is None: header = MQTTFixedHeader(CONNACK, 0x00) else: if fixed.packet_type is not CONNACK: raise MQTTException("Invalid fixed packet type %s for ConnackPacket init" % fixed.packet_type) header = fixed super().__init__(header) self.variable_header = variable_header self.payload = None
def __init__(self, fixed: MQTTFixedHeader=None, variable_header: PacketIDVariableHeader=None, payload=None): if fixed is None: header = MQTTFixedHeader(SUBSCRIBE, 0x02) # [MQTT-3.8.1-1] else: if fixed.packet_type is not SUBSCRIBE: raise MQTTException("Invalid fixed packet type %s for SubscribePacket init" % fixed.packet_type) header = fixed super().__init__(header) self.variable_header = variable_header self.payload = payload
def __init__(self, fixed: MQTTFixedHeader = None, variable_header: PublishVariableHeader = None, payload=None): if fixed is None: header = MQTTFixedHeader(PUBLISH, 0x00) else: if fixed.packet_type is not PUBLISH: raise HBMQTTException( "Invalid fixed packet type %s for PublishPacket init" % fixed.packet_type) header = fixed super().__init__(header) self.variable_header = variable_header self.payload = payload
def __init__(self, fixed: MQTTFixedHeader = None, vh: ConnectVariableHeader = None, payload: ConnectPayload = None): if fixed is None: header = MQTTFixedHeader(CONNECT, 0x00) else: if fixed.packet_type is not CONNECT: raise MQTTException( "Invalid fixed packet type %s for ConnectPacket init" % fixed.packet_type) header = fixed super().__init__(header) if not vh: vh = ConnectVariableHeader() if not payload: payload = ConnectPayload() self.variable_header = vh self.payload = payload
def decode_buffer(self): global PACKET_TYPES while self.buffer: try: fixed = MQTTFixedHeader.from_bytes(self.buffer) except MQTTException: return msgsize = fixed.bytes_length + fixed.remaining_length if msgsize > len(self.buffer): return workbuf = self.buffer[:msgsize] self.buffer = self.buffer[msgsize:] ptcons = PACKET_TYPES.get(fixed.packet_type, None) if not ptcons: print('Undefined handler for packet type %x' % fixed.packet_type) packet = ptcons.from_bytes(workbuf) self.message_received(packet)
def test_marshal_demarshal_truncated(self): fh1 = MQTTFixedHeader(CONNECT, 0, 102476800) fh1_bytes = fh1.to_bytes()[:-1] fh2 = MQTTFixedHeader.from_bytes(fh1_bytes)
def __init__(self, fixed: MQTTFixedHeader = None): if not fixed: fixed = MQTTFixedHeader(PINGREQ) assert fixed.packet_type == PINGREQ super().__init__(fixed)