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.") if not target.get_type() in self.__types.keys(): self.__types[target.get_type()] = target return self if self.__types[target.get_type()] != target: raise RuntimeError("That ID already own by other message.") return self 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.")