39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
import os
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
from controllers.mqtt_forwarder import MQTTForwarder
|
|
from services.mqtt_service import MQTTService
|
|
|
|
|
|
class ForwarderService:
|
|
|
|
src_broker_service: MQTTService
|
|
dst_broker_service: MQTTService
|
|
forwards: dict[MQTTForwarder, tuple[str, str]]
|
|
|
|
def __init__(self, src_broker: MQTTService, dst_broker: MQTTService):
|
|
self.src_broker_service = src_broker
|
|
self.dst_broker_service = dst_broker
|
|
self.forwards = {}
|
|
|
|
def register_forwarder(self, client_id: str, src_topic: str, dst_topic: str, qos : int) -> None:
|
|
forwarder = MQTTForwarder(
|
|
client_id,
|
|
self.src_broker_service,
|
|
self.dst_broker_service,
|
|
qos
|
|
)
|
|
self.forwards[forwarder] = (src_topic, dst_topic)
|
|
|
|
def start_all(self):
|
|
self.src_broker_service.connect()
|
|
self.dst_broker_service.connect()
|
|
|
|
for forwarder, (src_topic, dst_topic) in self.forwards.items():
|
|
forwarder.start(src_topic, dst_topic)
|
|
|
|
def stop_all(self):
|
|
self.src_broker_service.disconnect()
|
|
self.dst_broker_service.disconnect()
|