mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-04 02:05:21 +03:00
implement stop methods for comms
This commit is contained in:
parent
5176c05e2e
commit
426a666210
@ -183,8 +183,7 @@ class FrigateApp:
|
|||||||
if self.config.mqtt.enabled:
|
if self.config.mqtt.enabled:
|
||||||
comms.append(MqttClient(self.config))
|
comms.append(MqttClient(self.config))
|
||||||
|
|
||||||
self.ws_client = WebSocketClient(self.config)
|
comms.append(WebSocketClient(self.config))
|
||||||
comms.append(self.ws_client)
|
|
||||||
self.dispatcher = Dispatcher(self.config, self.camera_metrics, comms)
|
self.dispatcher = Dispatcher(self.config, self.camera_metrics, comms)
|
||||||
|
|
||||||
def start_detectors(self) -> None:
|
def start_detectors(self) -> None:
|
||||||
@ -417,7 +416,7 @@ class FrigateApp:
|
|||||||
logger.info(f"Stopping...")
|
logger.info(f"Stopping...")
|
||||||
self.stop_event.set()
|
self.stop_event.set()
|
||||||
|
|
||||||
self.ws_client.stop()
|
self.dispatcher.stop()
|
||||||
self.detected_frames_processor.join()
|
self.detected_frames_processor.join()
|
||||||
self.event_processor.join()
|
self.event_processor.join()
|
||||||
self.event_cleanup.join()
|
self.event_cleanup.join()
|
||||||
|
|||||||
@ -27,6 +27,11 @@ class Communicator(ABC):
|
|||||||
"""Pass receiver so communicators can pass commands."""
|
"""Pass receiver so communicators can pass commands."""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def stop(self) -> None:
|
||||||
|
"""Stop the communicator."""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Dispatcher:
|
class Dispatcher:
|
||||||
"""Handle communication between Frigate and communicators."""
|
"""Handle communication between Frigate and communicators."""
|
||||||
@ -72,6 +77,10 @@ class Dispatcher:
|
|||||||
for comm in self.comms:
|
for comm in self.comms:
|
||||||
comm.publish(topic, payload, retain)
|
comm.publish(topic, payload, retain)
|
||||||
|
|
||||||
|
def stop(self) -> None:
|
||||||
|
for comm in self.comms:
|
||||||
|
comm.stop()
|
||||||
|
|
||||||
def _on_detect_command(self, camera_name: str, payload: str) -> None:
|
def _on_detect_command(self, camera_name: str, payload: str) -> None:
|
||||||
"""Callback for detect topic."""
|
"""Callback for detect topic."""
|
||||||
detect_settings = self.config.cameras[camera_name].detect
|
detect_settings = self.config.cameras[camera_name].detect
|
||||||
|
|||||||
@ -35,6 +35,9 @@ class MqttClient(Communicator): # type: ignore[misc]
|
|||||||
f"{self.mqtt_config.topic_prefix}/{topic}", payload, retain=retain
|
f"{self.mqtt_config.topic_prefix}/{topic}", payload, retain=retain
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def stop(self) -> None:
|
||||||
|
self.client.disconnect()
|
||||||
|
|
||||||
def _set_initial_topics(self) -> None:
|
def _set_initial_topics(self) -> None:
|
||||||
"""Set initial state topics."""
|
"""Set initial state topics."""
|
||||||
for camera_name, camera in self.config.cameras.items():
|
for camera_name, camera in self.config.cameras.items():
|
||||||
|
|||||||
@ -95,3 +95,4 @@ class WebSocketClient(Communicator): # type: ignore[misc]
|
|||||||
self.websocket_server.manager.join()
|
self.websocket_server.manager.join()
|
||||||
self.websocket_server.shutdown()
|
self.websocket_server.shutdown()
|
||||||
self.websocket_thread.join()
|
self.websocket_thread.join()
|
||||||
|
logger.info("Exiting websocket client...")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user