message_receiver.py 717 B

1234567891011121314151617181920212223
  1. from .message import message
  2. from .message_decoder import message_decoder
  3. class message_receiver:
  4. def __init__(self) -> None:
  5. self.__types = dict()
  6. def register(self, target: type) -> object:
  7. if not issubclass(target, message):
  8. raise RuntimeError("Can not register type which is not message.")
  9. self.__types[target.get_type()] = target
  10. return self
  11. def receive(self, content: bytes) -> message:
  12. decoder = message_decoder(content)
  13. type_id = decoder.extract_type()
  14. if type_id in self.__types:
  15. return decoder.build(self.__types[type_id])
  16. raise RuntimeError("Can nof find message type ID in registered.")