R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
CapnpNetworkBus.cpp
Go to the documentation of this file.
1/*
2** EPITECH PROJECT, 2025
3** Created by mael on 08/12/2025.
4** File description:
5** CapnpNetworkBus.cpp
6*/
7
8#include "CapnpNetworkBus.hpp"
9
10namespace CapnpHelpers {
11
12 std::vector<uint8_t> serialize(capnp::MallocMessageBuilder &builder) {
13 // Serialize to flat array of words
14 kj::Array<capnp::word> words = capnp::messageToFlatArray(builder);
15
16 // Convert to bytes
17 auto bytes = words.asBytes();
18 return std::vector<uint8_t>(bytes.begin(), bytes.end());
19 }
20
21 capnp::FlatArrayMessageReader deserialize(const std::vector<uint8_t> &data) {
22 // Convert bytes to words (Cap'n Proto's unit)
23 const capnp::word *wordPtr = reinterpret_cast<const capnp::word *>(data.data());
24 size_t wordCount = data.size() / sizeof(capnp::word);
25
26 kj::ArrayPtr<const capnp::word> words(wordPtr, wordCount);
27
28 // Create reader (no copy, references data directly)
29 return capnp::FlatArrayMessageReader(words);
30 }
31
32} // namespace CapnpHelpers
Helper functions for Cap'n Proto serialization/deserialization.
capnp::FlatArrayMessageReader deserialize(const std::vector< uint8_t > &data)
Create a Cap'n Proto reader from received bytes.
std::vector< uint8_t > serialize(capnp::MallocMessageBuilder &builder)
Serialize a Cap'n Proto message builder to bytes.