29 [[nodiscard]] std::vector<uint8_t>
serialize()
const {
30 capnp::MallocMessageBuilder message;
37 auto bytes = capnp::messageToFlatArray(message);
38 auto byteArray = bytes.asBytes();
39 return std::vector<uint8_t>(byteArray.begin(), byteArray.end());
43 KJ_REQUIRE(data.size() %
sizeof(capnp::word) == 0,
44 "Serialized data size must be a multiple of capnp::word");
45 auto aligned = kj::heapArray<uint8_t>(data.size());
46 memcpy(aligned.begin(), data.data(), data.size());
47 kj::ArrayPtr<const capnp::word> words(
reinterpret_cast<const capnp::word *
>(aligned.begin()),
48 aligned.size() /
sizeof(capnp::word));
50 capnp::FlatArrayMessageReader reader(words);
54 result.
roomName = msg.getRoomName().cStr();
55 result.maxPlayers = msg.getMaxPlayers();
56 result.isPrivate = msg.getIsPrivate();
57 result.gameSpeedMultiplier = msg.getGameSpeedMultiplier();
59 if (result.gameSpeedMultiplier <= 0.0f || result.gameSpeedMultiplier > 1.0f) {
60 result.gameSpeedMultiplier = 1.0f;