R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
RegisterAccount.hpp
Go to the documentation of this file.
1/*
2** EPITECH PROJECT, 2026
3** r-type
4** File description:
5** RegisterAccount.hpp
6*/
7
8#pragma once
9
10#include <capnp/message.h>
11#include <capnp/serialize.h>
12#include <kj/array.h>
13#include <schemas/c2s_messages.capnp.h>
14#include <string>
15#include <vector>
16
17namespace RType {
18 namespace Messages {
19 namespace C2S {
20
26 public:
27 std::string username;
28 std::string password;
29
30 RegisterAccount() = default;
31 RegisterAccount(const std::string &user, const std::string &pass)
32 : username(user), password(pass) {}
33
37 std::vector<uint8_t> serialize() const {
38 ::capnp::MallocMessageBuilder message;
39 auto request = message.initRoot<::RegisterAccount>();
40
41 request.setUsername(username);
42 request.setPassword(password);
43
44 kj::Array<capnp::word> words = messageToFlatArray(message);
45 auto bytes = words.asBytes();
46 return std::vector<uint8_t>(bytes.begin(), bytes.end());
47 }
48
52 static RegisterAccount deserialize(const std::vector<uint8_t> &data) {
53 kj::ArrayPtr<const capnp::word> words(reinterpret_cast<const capnp::word *>(data.data()),
54 data.size() / sizeof(capnp::word));
55
56 ::capnp::FlatArrayMessageReader message(words);
57 auto request = message.getRoot<::RegisterAccount>();
58
59 RegisterAccount result;
60 result.username = request.getUsername().cStr();
61 result.password = request.getPassword().cStr();
62
63 return result;
64 }
65 };
66
67 } // namespace C2S
68 } // namespace Messages
69} // namespace RType
Request to register a new user account.
static RegisterAccount deserialize(const std::vector< uint8_t > &data)
Deserialize from Cap'n Proto binary format.
std::vector< uint8_t > serialize() const
Serialize to Cap'n Proto binary format.
RegisterAccount(const std::string &user, const std::string &pass)