amqtt/hbmqtt/mqtt/puback.py

48 wiersze
1.3 KiB
Python

# Copyright (c) 2015 Nicolas JOUANIN
#
# See the file license.txt for copying permission.
from hbmqtt.mqtt.packet import (
MQTTPacket,
MQTTFixedHeader,
PUBACK,
PacketIdVariableHeader,
)
from hbmqtt.errors import HBMQTTException
class PubackPacket(MQTTPacket):
VARIABLE_HEADER = PacketIdVariableHeader
PAYLOAD = None
@property
def packet_id(self):
return self.variable_header.packet_id
@packet_id.setter
def packet_id(self, val: int):
self.variable_header.packet_id = val
def __init__(
self,
fixed: MQTTFixedHeader = None,
variable_header: PacketIdVariableHeader = None,
):
if fixed is None:
header = MQTTFixedHeader(PUBACK, 0x00)
else:
if fixed.packet_type is not PUBACK:
raise HBMQTTException(
"Invalid fixed packet type %s for PubackPacket init"
% fixed.packet_type
)
header = fixed
super().__init__(header)
self.variable_header = variable_header
self.payload = None
@classmethod
def build(cls, packet_id: int):
v_header = PacketIdVariableHeader(packet_id)
packet = PubackPacket(variable_header=v_header)
return packet