40 [[nodiscard]] std::vector<uint8_t>
serialize()
const {
41 capnp::MallocMessageBuilder messageBuilder;
49 auto bytes = capnp::messageToFlatArray(messageBuilder);
50 auto byteArray = bytes.asBytes();
51 return std::vector<uint8_t>(byteArray.begin(), byteArray.end());
58 KJ_REQUIRE(data.size() %
sizeof(capnp::word) == 0,
59 "Serialized data size must be a multiple of capnp::word");
60 auto aligned = kj::heapArray<uint8_t>(data.size());
61 memcpy(aligned.begin(), data.data(), data.size());
62 kj::ArrayPtr<const capnp::word> words(
reinterpret_cast<const capnp::word *
>(aligned.begin()),
63 data.size() /
sizeof(capnp::word));
65 capnp::FlatArrayMessageReader messageReader(words);
69 result.
playerId = reader.getPlayerId();
70 result.playerName = reader.getPlayerName().cStr();
71 result.message = reader.getMessage().cStr();
72 result.timestamp = reader.getTimestamp();