Module lib.server.mqttbroker

Mqtt broker management class

Expand source code
# Distributed under Pycameresp License
# Copyright (c) 2023 Remi BERTHOLET
# pylint:disable=consider-using-f-string
""" Mqtt broker management class """
import server.server
import tools.logger
import tools.tasking

class MqttBrokerInstance(tools.tasking.ServerInstance):
        """ Mqtt broker instance """
        BrokerCoreClass = None
        def __init__(self, **kwargs):
                tools.tasking.ServerInstance.__init__(self, **kwargs)

        async def on_connection(self, reader, writer):
                """ Asynchronous connection detected """
                try:
                        if MqttBrokerInstance.BrokerCoreClass is None:
                                tools.logger.syslog("MqttBroker load")
                                from server.mqttbrokercore import MqttBrokerCore
                                MqttBrokerInstance.BrokerCoreClass = MqttBrokerCore
                                tools.logger.syslog("MqttBroker ready")
                        if MqttBrokerInstance.BrokerCoreClass is not None:
                                MqttBrokerInstance.BrokerCoreClass(reader, writer)
                except Exception as err:
                        tools.logger.syslog(err)

class MqttBroker:
        """ Mqtt server instance """
        config = None

        @staticmethod
        def init():
                """ Initialize mqtt server """
                if MqttBroker.config is None:
                        MqttBroker.config = server.server.ServerConfig()
                        MqttBroker.config.load_create()
                else:
                        MqttBroker.config.refresh()

        @staticmethod
        def start(**kwargs):
                """ Start the mqtt server with asyncio loop.
                broker_port : tcp/ip mqtt port of the server default 1883  """
                MqttBroker.init()
                if MqttBroker.config.mqtt_broker:
                        kwargs["port"] = kwargs.get("mqtt_broker_port",1883)
                        kwargs["name"] = "MqttBroker"
                        tools.tasking.Tasks.create_server(MqttBrokerInstance(**kwargs))
                else:
                        tools.logger.syslog("MqttBroker disabled in config")

Classes

class MqttBroker

Mqtt server instance

Expand source code
class MqttBroker:
        """ Mqtt server instance """
        config = None

        @staticmethod
        def init():
                """ Initialize mqtt server """
                if MqttBroker.config is None:
                        MqttBroker.config = server.server.ServerConfig()
                        MqttBroker.config.load_create()
                else:
                        MqttBroker.config.refresh()

        @staticmethod
        def start(**kwargs):
                """ Start the mqtt server with asyncio loop.
                broker_port : tcp/ip mqtt port of the server default 1883  """
                MqttBroker.init()
                if MqttBroker.config.mqtt_broker:
                        kwargs["port"] = kwargs.get("mqtt_broker_port",1883)
                        kwargs["name"] = "MqttBroker"
                        tools.tasking.Tasks.create_server(MqttBrokerInstance(**kwargs))
                else:
                        tools.logger.syslog("MqttBroker disabled in config")

Class variables

var config

Static methods

def init()

Initialize mqtt server

Expand source code
@staticmethod
def init():
        """ Initialize mqtt server """
        if MqttBroker.config is None:
                MqttBroker.config = server.server.ServerConfig()
                MqttBroker.config.load_create()
        else:
                MqttBroker.config.refresh()
def start(**kwargs)

Start the mqtt server with asyncio loop. broker_port : tcp/ip mqtt port of the server default 1883

Expand source code
@staticmethod
def start(**kwargs):
        """ Start the mqtt server with asyncio loop.
        broker_port : tcp/ip mqtt port of the server default 1883  """
        MqttBroker.init()
        if MqttBroker.config.mqtt_broker:
                kwargs["port"] = kwargs.get("mqtt_broker_port",1883)
                kwargs["name"] = "MqttBroker"
                tools.tasking.Tasks.create_server(MqttBrokerInstance(**kwargs))
        else:
                tools.logger.syslog("MqttBroker disabled in config")
class MqttBrokerInstance (**kwargs)

Mqtt broker instance

Constructor

Expand source code
class MqttBrokerInstance(tools.tasking.ServerInstance):
        """ Mqtt broker instance """
        BrokerCoreClass = None
        def __init__(self, **kwargs):
                tools.tasking.ServerInstance.__init__(self, **kwargs)

        async def on_connection(self, reader, writer):
                """ Asynchronous connection detected """
                try:
                        if MqttBrokerInstance.BrokerCoreClass is None:
                                tools.logger.syslog("MqttBroker load")
                                from server.mqttbrokercore import MqttBrokerCore
                                MqttBrokerInstance.BrokerCoreClass = MqttBrokerCore
                                tools.logger.syslog("MqttBroker ready")
                        if MqttBrokerInstance.BrokerCoreClass is not None:
                                MqttBrokerInstance.BrokerCoreClass(reader, writer)
                except Exception as err:
                        tools.logger.syslog(err)

Ancestors

  • tools.tasking.ServerInstance

Class variables

var BrokerCoreClass

Methods

async def on_connection(self, reader, writer)

Asynchronous connection detected

Expand source code
async def on_connection(self, reader, writer):
        """ Asynchronous connection detected """
        try:
                if MqttBrokerInstance.BrokerCoreClass is None:
                        tools.logger.syslog("MqttBroker load")
                        from server.mqttbrokercore import MqttBrokerCore
                        MqttBrokerInstance.BrokerCoreClass = MqttBrokerCore
                        tools.logger.syslog("MqttBroker ready")
                if MqttBrokerInstance.BrokerCoreClass is not None:
                        MqttBrokerInstance.BrokerCoreClass(reader, writer)
        except Exception as err:
                tools.logger.syslog(err)