R-Type 0.1
Loading...
Searching...
No Matches
DisconnectPayload.hpp
1#pragma once
2
3#include <cstdint>
4
5namespace rtype::protocol {
14enum class DisconnectReason : std::uint8_t {
15 ClientQuit = 0x01,
16 Timeout = 0x02,
17 ProtocolError = 0x03,
18 ServerShutdown = 0x04
19};
20
31};
32
33static_assert(sizeof(DisconnectPayload) == sizeof(DisconnectReason),
34 "DisconnectPayload must not contain padding");
35
41constexpr bool isValid(const DisconnectPayload &payload) {
42 return static_cast<std::uint8_t>(payload.reason) >=
43 static_cast<std::uint8_t>(DisconnectReason::ClientQuit) &&
44 static_cast<std::uint8_t>(payload.reason) <=
45 static_cast<std::uint8_t>(DisconnectReason::ServerShutdown);
46}
47
49} // namespace rtype::protocol
constexpr bool isValid(const DisconnectPayload &payload)
Checks that the reason is a known value.
Definition DisconnectPayload.hpp:41
DisconnectReason
Reason carried by a Disconnect message.
Definition DisconnectPayload.hpp:14
@ ServerShutdown
The server is stopping.
@ ClientQuit
The player left the game.
@ Timeout
The peer stopped answering.
@ ProtocolError
The peer sent invalid data.
Payload of a Disconnect message, 1 byte.
Definition DisconnectPayload.hpp:28
DisconnectReason reason
Why the connection closes.
Definition DisconnectPayload.hpp:30