| 155 | |
| 156 | @dataclass |
| 157 | class Message: |
| 158 | payload: Any |
| 159 | msg_id: int = None |
| 160 | timestamp: float = field(default_factory=time.time) |
| 161 | descriptor: Optional[Descriptor] = None |
| 162 | |
| 163 | def serialize(self) -> bytes: |
| 164 | # Serialize message |
| 165 | return ForkingPickler.dumps(self) |
| 166 | |
| 167 | @staticmethod |
| 168 | def deserialize(data: bytes) -> "Message": |
| 169 | # Deserialize message |
| 170 | return ForkingPickler.loads(data) |
| 171 | |
| 172 | |
| 173 | # ========================== |