from .message import message from .message_decoder import message_decoder class message_receiver: def __init__(self) -> None: self.__types = dict() def register(self, target: type) -> object: if not issubclass(target, message): raise RuntimeError("Can not register type which is not message.") self.__types[target.get_type()] = target return self def receive(self, content: bytes) -> message: decoder = message_decoder(content) type_id = decoder.extract_type() if type_id in self.__types: return decoder.build(self.__types[type_id]) raise RuntimeError("Can nof find message type ID in registered.")