Files
board-mate/rpi/services/forwarder_service.py
2026-01-04 15:21:03 +01:00

39 lines
1.2 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, 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()