"""Facilitates communication between processes.""" import logging from enum import Enum from typing import Any from .zmq_proxy import Publisher, Subscriber logger = logging.getLogger(__name__) class EventMetadataTypeEnum(str, Enum): all = "" manual_event_create = "manual_event_create" manual_event_end = "manual_event_end" regenerate_description = "regenerate_description" sub_label = "sub_label" recognized_license_plate = "recognized_license_plate" lpr_event_create = "lpr_event_create" save_lpr_snapshot = "save_lpr_snapshot" class EventMetadataPublisher(Publisher): """Simplifies receiving event metadata.""" topic_base = "event_metadata/" def __init__(self) -> None: super().__init__() def publish(self, topic: EventMetadataTypeEnum, payload: Any) -> None: super().publish(payload, topic.value) class EventMetadataSubscriber(Subscriber): """Simplifies receiving event metadata.""" topic_base = "event_metadata/" def __init__(self, topic: EventMetadataTypeEnum) -> None: super().__init__(topic.value) def _return_object(self, topic: str, payload: tuple) -> tuple: if payload is None: return (None, None) topic = EventMetadataTypeEnum[topic[len(self.topic_base) :]] return (topic, payload)