pull/8/head
Nicolas Jouanin 2015-06-26 22:08:31 +02:00
rodzic 933f2a2f94
commit f94135c315
3 zmienionych plików z 35 dodań i 35 usunięć

Wyświetl plik

@ -242,7 +242,7 @@ class MQTTClient:
self._session.local_address, self._session.local_port = self._session.writer.get_extra_info('sockname')
# Send CONNECT packet and wait for CONNACK
packet = ConnectPacket.build_request_from_session(self._session)
packet = self._session.build_connect_packet()
yield from packet.to_stream(self._session.writer)
self.logger.debug(" -out-> " + repr(packet))

Wyświetl plik

@ -4,7 +4,6 @@
from hbmqtt.mqtt.packet import MQTTPacket, MQTTFixedHeader, PacketType, MQTTVariableHeader, MQTTPayload
from hbmqtt.codecs import *
from hbmqtt.errors import MQTTException, CodecException, HBMQTTException, NoDataException
from hbmqtt.session import Session
class ConnectVariableHeader(MQTTVariableHeader):
@ -209,36 +208,3 @@ class ConnectPacket(MQTTPacket):
super().__init__(header)
self.variable_header = vh
self.payload = payload
@classmethod
def build_request_from_session(cls, session: Session):
vh = ConnectVariableHeader()
payload = ConnectPayload()
vh.keep_alive = session.keep_alive
vh.clean_session_flag = session.clean_session
vh.will_retain_flag = session.will_retain
payload.client_id = session.client_id
if session.username:
vh.username_flag = True
payload.username = session.username
else:
vh.username_flag = False
if session.password:
vh.password_flag = True
payload.password = session.password
else:
vh.password_flag = False
if session.will_flag:
vh.will_flag = True
vh.will_qos = session.will_qos
payload.will_message = session.will_message
payload.will_topic = session.will_topic
else:
vh.will_flag = False
header = MQTTFixedHeader(PacketType.CONNECT, 0x00)
packet = cls(header, vh, payload)
return packet

Wyświetl plik

@ -6,6 +6,7 @@ import logging
from enum import Enum
from hbmqtt.mqtt.packet import PacketType
from hbmqtt.mqtt.packet import MQTTFixedHeader
from hbmqtt.mqtt.connect import ConnectVariableHeader, ConnectPacket, ConnectPayload
from hbmqtt.mqtt import packet_class
from hbmqtt.errors import NoDataException
@ -48,6 +49,39 @@ class Session:
self.incoming_queues[p] = asyncio.Queue()
self.outgoing_queue = asyncio.Queue()
def build_connect_packet(self):
vh = ConnectVariableHeader()
payload = ConnectPayload()
vh.keep_alive = self.keep_alive
vh.clean_session_flag = self.clean_session
vh.will_retain_flag = self.will_retain
payload.client_id = self.client_id
if self.username:
vh.username_flag = True
payload.username = self.username
else:
vh.username_flag = False
if self.password:
vh.password_flag = True
payload.password = self.password
else:
vh.password_flag = False
if self.will_flag:
vh.will_flag = True
vh.will_qos = self.will_qos
payload.will_message = self.will_message
payload.will_topic = self.will_topic
else:
vh.will_flag = False
header = MQTTFixedHeader(PacketType.CONNECT, 0x00)
packet = ConnectPacket(header, vh, payload)
return packet
@property
def next_packet_id(self):
self._packet_id += 1