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') self._session.local_address, self._session.local_port = self._session.writer.get_extra_info('sockname')
# Send CONNECT packet and wait for CONNACK # 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) yield from packet.to_stream(self._session.writer)
self.logger.debug(" -out-> " + repr(packet)) 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.mqtt.packet import MQTTPacket, MQTTFixedHeader, PacketType, MQTTVariableHeader, MQTTPayload
from hbmqtt.codecs import * from hbmqtt.codecs import *
from hbmqtt.errors import MQTTException, CodecException, HBMQTTException, NoDataException from hbmqtt.errors import MQTTException, CodecException, HBMQTTException, NoDataException
from hbmqtt.session import Session
class ConnectVariableHeader(MQTTVariableHeader): class ConnectVariableHeader(MQTTVariableHeader):
@ -209,36 +208,3 @@ class ConnectPacket(MQTTPacket):
super().__init__(header) super().__init__(header)
self.variable_header = vh self.variable_header = vh
self.payload = payload 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 enum import Enum
from hbmqtt.mqtt.packet import PacketType from hbmqtt.mqtt.packet import PacketType
from hbmqtt.mqtt.packet import MQTTFixedHeader from hbmqtt.mqtt.packet import MQTTFixedHeader
from hbmqtt.mqtt.connect import ConnectVariableHeader, ConnectPacket, ConnectPayload
from hbmqtt.mqtt import packet_class from hbmqtt.mqtt import packet_class
from hbmqtt.errors import NoDataException from hbmqtt.errors import NoDataException
@ -48,6 +49,39 @@ class Session:
self.incoming_queues[p] = asyncio.Queue() self.incoming_queues[p] = asyncio.Queue()
self.outgoing_queue = 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 @property
def next_packet_id(self): def next_packet_id(self):
self._packet_id += 1 self._packet_id += 1