Example #1
0
    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())
Example #2
0
 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
Example #3
0
    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
Example #4
0
    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
Example #5
0
 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
Example #6
0
    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)
Example #7
0
    def test_marshal_demarshal_truncated(self):
        fh1 = MQTTFixedHeader(CONNECT, 0, 102476800)
        fh1_bytes = fh1.to_bytes()[:-1]

        fh2 = MQTTFixedHeader.from_bytes(fh1_bytes)
Example #8
0
 def __init__(self, fixed: MQTTFixedHeader = None):
     if not fixed:
         fixed = MQTTFixedHeader(PINGREQ)
     assert fixed.packet_type == PINGREQ
     super().__init__(fixed)