diff --git a/hbmqtt/broker.py b/hbmqtt/broker.py index fb31a3c..3bfc8dc 100644 --- a/hbmqtt/broker.py +++ b/hbmqtt/broker.py @@ -495,12 +495,12 @@ class Broker: if self.authenticate(client_session): connack = ConnackPacket.build(client_session.parent, CONNECTION_ACCEPTED) self.logger.info('%s : connection accepted' % format_client_message(session=client_session)) - yield from self.plugins_manager.fire_event(EVENT_MQTT_PACKET_SENT, packet=connack) + yield from self.plugins_manager.fire_event(EVENT_MQTT_PACKET_SENT, packet=connack, session=client_session) yield from connack.to_stream(writer) else: connack = ConnackPacket.build(client_session.parent, NOT_AUTHORIZED) self.logger.info('%s : connection refused' % format_client_message(session=client_session)) - yield from self.plugins_manager.fire_event(EVENT_MQTT_PACKET_SENT, packet=connack) + yield from self.plugins_manager.fire_event(EVENT_MQTT_PACKET_SENT, packet=connack, session=client_session) yield from connack.to_stream(writer) yield from writer.close() return diff --git a/hbmqtt/client.py b/hbmqtt/client.py index fb78873..86409ed 100644 --- a/hbmqtt/client.py +++ b/hbmqtt/client.py @@ -38,8 +38,8 @@ class ClientContext(BaseContext): ClientContext is used as the context passed to plugins interacting with the client. It act as an adapter to client services from plugins """ - def __init__(self, loop=None): - super().__init__(loop) + def __init__(self, client): + super().__init__(client.loop) class MQTTClient: @@ -89,7 +89,7 @@ class MQTTClient: self._connection_closed_future = None # Init plugins manager - self.plugins_manager = PluginManager('hbmqtt.client', ClientContext(self._loop), self._loop) + self.plugins_manager = PluginManager('hbmqtt.client', ClientContext(self)) @asyncio.coroutine @@ -253,10 +253,14 @@ class MQTTClient: try : connect_packet = self.build_connect_packet() yield from connect_packet.to_stream(writer) - yield from self.plugins_manager.fire_event(EVENT_MQTT_PACKET_SENT, packet=connect_packet) + yield from self.plugins_manager.fire_event(EVENT_MQTT_PACKET_SENT, + packet=connect_packet, + session=self.session) connack = yield from ConnackPacket.from_stream(reader) - yield from self.plugins_manager.fire_event(EVENT_MQTT_PACKET_RECEIVED, packet=connack) + yield from self.plugins_manager.fire_event(EVENT_MQTT_PACKET_RECEIVED, + packet=connack, + session=self.session) return_code = connack.variable_header.return_code except Exception as e: self.logger.warn("connection failed: %s" % e)