def from_datagram(cls, datagram: bytes) -> "ServerPackage": """Override #Package.from_datagram to include `game_state_update`.""" header, payload = Header.deconstruct_datagram(datagram) state_update_bytesize = int.from_bytes(payload[:2], "big") game_state_update = GameStateUpdate.from_bytes( payload[2:state_update_bytesize + 2]) payload = payload[state_update_bytesize + 2:] events = cls._read_out_event_block(payload) result = cls(header, game_state_update, events) result._datagram = datagram # pylint: disable=protected-access return result
def test_bytepacking(self): update = GameStateUpdate(5) bytepack = update.to_bytes() unpacked_update = GameStateUpdate.from_bytes(bytepack) assert update == unpacked_update