88 KJ_REQUIRE(data.size() %
sizeof(capnp::word) == 0,
89 "Serialized data size must be a multiple of capnp::word");
90 auto aligned = kj::heapArray<uint8_t>(data.size());
91 memcpy(aligned.begin(), data.data(), data.size());
92 kj::ArrayPtr<const capnp::word> words(
reinterpret_cast<const capnp::word *
>(aligned.begin()),
93 data.size() /
sizeof(capnp::word));
95 capnp::FlatArrayMessageReader messageReader(words);
96 auto reader = messageReader.getRoot<
::LeftRoom>();
99 result.
playerId = reader.getPlayerId();
102 auto capnpReason = reader.getReason();
103 switch (capnpReason) {
104 case ::LeftRoomReason::VOLUNTARY_LEAVE:
107 case ::LeftRoomReason::KICKED:
110 case ::LeftRoomReason::ROOM_CLOSED:
113 case ::LeftRoomReason::SERVER_SHUTDOWN:
118 result.message = reader.getMessage().cStr();