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, 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, sensor_type : str | None, 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, sensor_type) def start_all(self): self.src_broker_service.connect() self.dst_broker_service.connect() for forwarder, (src_topic, dst_topic, sensor_type) in self.forwards.items(): forwarder.start(src_topic, dst_topic, sensor_type) def stop_all(self): self.src_broker_service.disconnect() self.dst_broker_service.disconnect()