group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
ChatProtocol.hpp
Go to the documentation of this file.
1
3
4#pragma once
5
7
8#include <cstdint>
9#include <optional>
10#include <span>
11#include <string>
12#include <string_view>
13#include <vector>
14
15namespace net::chat
16{
17
18inline constexpr std::uint16_t k_maxChatBytes = 240;
19
21{
22 std::uint16_t clientSeq = 0;
23 std::string message;
24};
25
27{
29 std::uint32_t serverSeq = 0;
30 std::string message;
31};
32
33[[nodiscard]] bool isValidUtf8(std::string_view text) noexcept;
34[[nodiscard]] std::string sanitizeUtf8(std::string_view text);
35[[nodiscard]] std::vector<std::uint8_t> encodeClientText(std::uint16_t clientSeq, std::string_view text);
36[[nodiscard]] std::vector<std::uint8_t>
37encodeServerText(ClientId sender, std::uint32_t serverSeq, std::string_view text);
38[[nodiscard]] std::optional<ClientTextChat> decodeClientText(std::span<const std::uint8_t> payload);
39[[nodiscard]] std::optional<ServerTextChat> decodeServerText(std::span<const std::uint8_t> payload);
40
41} // namespace net::chat
Network client identifier component for multiplayer entities.
Definition ChatProtocol.cpp:12
std::vector< std::uint8_t > encodeClientText(std::uint16_t clientSeq, std::string_view text)
Definition ChatProtocol.cpp:139
std::string sanitizeUtf8(std::string_view text)
Definition ChatProtocol.cpp:111
std::optional< ServerTextChat > decodeServerText(std::span< const std::uint8_t > payload)
Definition ChatProtocol.cpp:186
constexpr std::uint16_t k_maxChatBytes
Definition ChatProtocol.hpp:18
std::optional< ClientTextChat > decodeClientText(std::span< const std::uint8_t > payload)
Definition ChatProtocol.cpp:170
bool isValidUtf8(std::string_view text) noexcept
Definition ChatProtocol.cpp:66
std::vector< std::uint8_t > encodeServerText(ClientId sender, std::uint32_t serverSeq, std::string_view text)
Definition ChatProtocol.cpp:154
Associates an entity with a connected network client.
Definition ClientId.hpp:10
Definition ChatProtocol.hpp:21
std::uint16_t clientSeq
Definition ChatProtocol.hpp:22
std::string message
Definition ChatProtocol.hpp:23
Definition ChatProtocol.hpp:27
ClientId sender
Definition ChatProtocol.hpp:28
std::uint32_t serverSeq
Definition ChatProtocol.hpp:29
std::string message
Definition ChatProtocol.hpp:30