R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
LeaveRoom.hpp
Go to the documentation of this file.
1/*
2** EPITECH PROJECT, 2025
3** LeaveRoom.hpp - Request to leave current room
4*/
5
6#pragma once
7
8#include <capnp/message.h>
9#include <capnp/serialize.h>
10#include <vector>
11#include "schemas/c2s_messages.capnp.h"
12
13namespace RType::Messages::C2S {
14
15 class LeaveRoom {
16 public:
17 LeaveRoom() = default;
18
19 std::vector<uint8_t> serialize() const {
20 ::capnp::MallocMessageBuilder message;
21 // LeaveRoom has no fields, so we just initialize an empty message
22 message.initRoot<::LeaveRoom>();
23
24 kj::VectorOutputStream output;
25 ::capnp::writeMessage(output, message);
26 auto data = output.getArray();
27 return std::vector<uint8_t>(data.begin(), data.end());
28 }
29
30 static LeaveRoom deserialize(const std::vector<uint8_t> &data) {
31 if (data.empty()) {
32 throw std::runtime_error("Cannot deserialize LeaveRoom from empty data");
33 }
34
35 kj::ArrayPtr<const ::capnp::word> words(reinterpret_cast<const ::capnp::word *>(data.data()),
36 data.size() / sizeof(::capnp::word));
37
38 ::capnp::FlatArrayMessageReader reader(words);
39 reader.getRoot<::LeaveRoom>(); // Validate
40
41 return LeaveRoom();
42 }
43 };
44
45} // namespace RType::Messages::C2S
std::vector< uint8_t > serialize() const
Definition LeaveRoom.hpp:19
static LeaveRoom deserialize(const std::vector< uint8_t > &data)
Definition LeaveRoom.hpp:30
Client-to-Server messages.