import umsgpack class Message(): def __init__(self, message=None): self.message = message def serialise(self): raise NotImplementedError def deserialise(self, message): raise NotImplementedError class PackMessage(Message): def serialise(self): return umsgpack.packb(self.message) def deserialise(self, message): return PackMessage(umsgpack.unpackb(self.message)) class ProtoMessage(Message): def __init__(self, proto_type=None, message=None): super().__init__(message) self._type = proto_type def serialise(self): return self.message.SerializeToString() def deserialise(self, message): return ProtoMessage(self._type, self._type.ParseFromString(message))