R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
RoomCreated.hpp
Go to the documentation of this file.
1/*
2** EPITECH PROJECT, 2025
3** File description:
4** RoomCreated.hpp - Room creation response
5*/
6
7#pragma once
8
9#include <capnp/message.h>
10#include <capnp/serialize.h>
11#include <string>
12#include <vector>
13#include "schemas/s2c_messages.capnp.h"
14
15namespace RType::Messages::S2C {
16
18 public:
19 std::string roomId;
20 bool success;
21 std::string errorMessage;
22
23 RoomCreated() = default;
24 RoomCreated(const std::string &id, bool succ, const std::string &err = "")
25 : roomId(id), success(succ), errorMessage(err) {}
26
27 [[nodiscard]] std::vector<uint8_t> serialize() const {
28 capnp::MallocMessageBuilder message;
29 auto builder = message.initRoot<::RoomCreated>();
30 builder.setRoomId(roomId);
31 builder.setSuccess(success);
32 builder.setErrorMessage(errorMessage);
33
34 auto bytes = capnp::messageToFlatArray(message);
35 auto byteArray = bytes.asBytes();
36 return std::vector<uint8_t>(byteArray.begin(), byteArray.end());
37 }
38
39 static RoomCreated deserialize(const std::vector<uint8_t> &data) {
40 KJ_REQUIRE(data.size() % sizeof(capnp::word) == 0,
41 "Serialized data size must be a multiple of capnp::word");
42 auto aligned = kj::heapArray<uint8_t>(data.size());
43 memcpy(aligned.begin(), data.data(), data.size());
44 kj::ArrayPtr<const capnp::word> words(reinterpret_cast<const capnp::word *>(aligned.begin()),
45 aligned.size() / sizeof(capnp::word));
46
47 capnp::FlatArrayMessageReader reader(words);
48 auto msg = reader.getRoot<::RoomCreated>();
49
50 RoomCreated result;
51 result.roomId = msg.getRoomId().cStr();
52 result.success = msg.getSuccess();
53 result.errorMessage = msg.getErrorMessage().cStr();
54 return result;
55 }
56 };
57
58} // namespace RType::Messages::S2C
static RoomCreated deserialize(const std::vector< uint8_t > &data)
std::vector< uint8_t > serialize() const
RoomCreated(const std::string &id, bool succ, const std::string &err="")
Server-to-Client messages.
Definition Server.hpp:34