from typing import Tuple class MQ: """ Overview: Abstract basic mq class. """ def __init__(self, *args, **kwargs) -> None: """ Overview: The __init__ method of the inheritance must support the extra kwargs parameter. """ pass def listen(self) -> None: """ Overview: Bind to local socket or connect to third party components. """ raise NotImplementedError def publish(self, topic: str, data: bytes) -> None: """ Overview: Send data to mq. Arguments: - topic (:obj:`str`): Topic. - data (:obj:`bytes`): Payload data. """ raise NotImplementedError def subscribe(self, topic: str) -> None: """ Overview: Subscribe to the topic. Arguments: - topic (:obj:`str`): Topic """ raise NotImplementedError def unsubscribe(self, topic: str) -> None: """ Overview: Unsubscribe from the topic. Arguments: - topic (:obj:`str`): Topic """ raise NotImplementedError def recv(self) -> Tuple[str, bytes]: """ Overview: Wait for incoming message, this function will block the current thread. Returns: - data (:obj:`Any`): The sent payload. """ raise NotImplementedError def stop(self) -> None: """ Overview: Unsubscribe from all topics and stop the connection to the message queue server. """ return