107 const void* data, std::size_t len,
DirectoryMessage& kind,
const std::uint8_t*& payload, std::size_t& payloadLen);
110std::optional<ServerRegistration>
decodeRegistration(
const std::uint8_t* data, std::size_t len);
113std::optional<RegisterAck>
decodeRegisterAck(
const std::uint8_t* data, std::size_t len);
115std::vector<std::uint8_t>
encodeServerList(
const std::vector<ServerInfo>& servers);
116std::optional<std::vector<ServerInfo>>
decodeServerList(
const std::uint8_t* data, std::size_t len);
119std::optional<PunchRequest>
decodePunchRequest(
const std::uint8_t* data, std::size_t len);
122std::optional<PunchResponse>
decodePunchResponse(
const std::uint8_t* data, std::size_t len);
125std::optional<UdpHello>
decodeUdpHello(
const std::uint8_t* data, std::size_t len);
128std::optional<UdpPunchPeer>
decodeUdpPunchPeer(
const std::uint8_t* data, std::size_t len);
Opaque relay authorization token shared by discovery and transport.
TCP stream client — sends input to the server and receives state updates.
Definition Client.hpp:65
TCP stream socket — receives client packets and echoes them back.
Definition Server.hpp:40
Definition GlobalDiscoveryProtocol.cpp:11
std::optional< RegisterAck > decodeRegisterAck(const std::uint8_t *data, std::size_t len)
Definition GlobalDiscoveryProtocol.cpp:159
DirectoryUdpMessage
Definition GlobalDiscoveryProtocol.hpp:34
@ PunchProbe
Definition GlobalDiscoveryProtocol.hpp:37
@ Hello
Definition GlobalDiscoveryProtocol.hpp:35
std::optional< ServerRegistration > decodeRegistration(const std::uint8_t *data, std::size_t len)
Definition GlobalDiscoveryProtocol.cpp:137
std::optional< std::vector< ServerInfo > > decodeServerList(const std::uint8_t *data, std::size_t len)
Definition GlobalDiscoveryProtocol.cpp:182
std::vector< std::uint8_t > encodeUdpHello(const UdpHello &hello)
Definition GlobalDiscoveryProtocol.cpp:251
std::optional< PunchResponse > decodePunchResponse(const std::uint8_t *data, std::size_t len)
Definition GlobalDiscoveryProtocol.cpp:233
std::uint32_t randomNonce()
Definition GlobalDiscoveryProtocol.cpp:300
std::vector< std::uint8_t > encodeServerList(const std::vector< ServerInfo > &servers)
Definition GlobalDiscoveryProtocol.cpp:173
bool parseEnvelope(const void *data, std::size_t len, DirectoryMessage &kind, const std::uint8_t *&payload, std::size_t &payloadLen)
Definition GlobalDiscoveryProtocol.cpp:105
std::vector< std::uint8_t > encodeRegisterAck(const RegisterAck &ack)
Definition GlobalDiscoveryProtocol.cpp:149
std::vector< std::uint8_t > encodeRegistration(DirectoryMessage kind, const ServerRegistration ®)
Definition GlobalDiscoveryProtocol.cpp:126
DirectoryMessage
Definition GlobalDiscoveryProtocol.hpp:22
@ RegisterServer
Definition GlobalDiscoveryProtocol.hpp:23
@ ListResponse
Definition GlobalDiscoveryProtocol.hpp:27
@ ListRequest
Definition GlobalDiscoveryProtocol.hpp:26
@ Heartbeat
Definition GlobalDiscoveryProtocol.hpp:25
@ PunchPeer
Definition GlobalDiscoveryProtocol.hpp:30
@ PunchRequest
Definition GlobalDiscoveryProtocol.hpp:28
@ PunchResponse
Definition GlobalDiscoveryProtocol.hpp:29
@ RegisterAck
Definition GlobalDiscoveryProtocol.hpp:24
std::optional< PunchRequest > decodePunchRequest(const std::uint8_t *data, std::size_t len)
Definition GlobalDiscoveryProtocol.cpp:213
std::vector< std::uint8_t > encodePunchRequest(const PunchRequest &req)
Definition GlobalDiscoveryProtocol.cpp:205
std::vector< std::uint8_t > makeEnvelope(DirectoryMessage kind, const std::vector< std::uint8_t > &payload)
Definition GlobalDiscoveryProtocol.cpp:94
std::vector< std::uint8_t > encodePunchResponse(const PunchResponse &resp)
Definition GlobalDiscoveryProtocol.cpp:222
constexpr std::uint16_t k_defaultDirectoryUdpPort
Definition GlobalDiscoveryProtocol.hpp:18
constexpr std::uint16_t k_defaultDirectoryTcpPort
Definition GlobalDiscoveryProtocol.hpp:17
UdpRole
Definition GlobalDiscoveryProtocol.hpp:41
@ Client
Definition GlobalDiscoveryProtocol.hpp:43
constexpr std::uint64_t k_serverTtlMs
Definition GlobalDiscoveryProtocol.hpp:19
std::vector< std::uint8_t > encodeUdpPunchPeer(const UdpPunchPeer &peer)
Definition GlobalDiscoveryProtocol.cpp:276
std::optional< UdpHello > decodeUdpHello(const std::uint8_t *data, std::size_t len)
Definition GlobalDiscoveryProtocol.cpp:261
std::optional< UdpPunchPeer > decodeUdpPunchPeer(const std::uint8_t *data, std::size_t len)
Definition GlobalDiscoveryProtocol.cpp:286
Definition RelayToken.hpp:16
Definition GlobalDiscoveryProtocol.hpp:78
std::uint32_t clientNonce
Definition GlobalDiscoveryProtocol.hpp:80
std::uint32_t serverId
Definition GlobalDiscoveryProtocol.hpp:79
Definition GlobalDiscoveryProtocol.hpp:84
bool accepted
Definition GlobalDiscoveryProtocol.hpp:85
net::RelayToken relayToken
Definition GlobalDiscoveryProtocol.hpp:87
std::string message
Definition GlobalDiscoveryProtocol.hpp:88
ServerInfo server
Definition GlobalDiscoveryProtocol.hpp:86
Definition GlobalDiscoveryProtocol.hpp:70
bool accepted
Definition GlobalDiscoveryProtocol.hpp:71
std::uint32_t serverId
Definition GlobalDiscoveryProtocol.hpp:72
std::string publicHost
Definition GlobalDiscoveryProtocol.hpp:73
std::string message
Definition GlobalDiscoveryProtocol.hpp:74
Definition GlobalDiscoveryProtocol.hpp:47
std::uint16_t gamePort
Definition GlobalDiscoveryProtocol.hpp:51
std::uint16_t udpPort
Definition GlobalDiscoveryProtocol.hpp:53
std::uint8_t currentPlayers
Definition GlobalDiscoveryProtocol.hpp:54
std::uint8_t maxPlayers
Definition GlobalDiscoveryProtocol.hpp:55
std::string udpHost
Definition GlobalDiscoveryProtocol.hpp:52
std::string host
Definition GlobalDiscoveryProtocol.hpp:50
std::uint64_t lastSeenMs
Definition GlobalDiscoveryProtocol.hpp:56
std::string name
Definition GlobalDiscoveryProtocol.hpp:49
bool natTraversalReady
Definition GlobalDiscoveryProtocol.hpp:57
Definition GlobalDiscoveryProtocol.hpp:61
std::uint16_t gamePort
Definition GlobalDiscoveryProtocol.hpp:64
std::uint8_t maxPlayers
Definition GlobalDiscoveryProtocol.hpp:66
std::uint32_t serverId
Definition GlobalDiscoveryProtocol.hpp:62
std::string name
Definition GlobalDiscoveryProtocol.hpp:63
std::uint8_t currentPlayers
Definition GlobalDiscoveryProtocol.hpp:65
Definition GlobalDiscoveryProtocol.hpp:92
std::uint16_t gamePort
Definition GlobalDiscoveryProtocol.hpp:95
UdpRole role
Definition GlobalDiscoveryProtocol.hpp:93
std::uint32_t idOrNonce
Definition GlobalDiscoveryProtocol.hpp:94
Definition GlobalDiscoveryProtocol.hpp:99
std::string host
Definition GlobalDiscoveryProtocol.hpp:101
std::uint16_t port
Definition GlobalDiscoveryProtocol.hpp:102
std::uint32_t clientNonce
Definition GlobalDiscoveryProtocol.hpp:100