group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
PacketHeader.hpp
Go to the documentation of this file.
1
37
38#pragma once
39
40#include <SDL3/SDL_stdinc.h>
41
42#include <cstdint>
43
44namespace net
45{
46
48inline constexpr uint16_t k_protocolMagic = 0x3247;
49
51inline constexpr uint8_t k_protocolVersion = 1;
52
58inline constexpr int k_maxPacketBytes = 1200;
59
61enum class PacketKind : uint8_t
62{
65
73};
74
79enum class ChannelId : uint8_t
80{
84
88
92
95
97};
98
99#pragma pack(push, 1)
102{
103 uint16_t magic;
104 uint8_t version;
105 uint8_t kind;
106 uint32_t connectionId;
107 uint16_t sequence;
108 uint8_t channel;
109 uint8_t flags;
110 uint16_t fragmentInfo;
111 uint16_t _pad;
112};
113#pragma pack(pop)
114static_assert(sizeof(PacketHeader) == 16, "PacketHeader must be exactly 16 bytes on the wire");
115
117inline constexpr int k_maxPayloadBytes = k_maxPacketBytes - static_cast<int>(sizeof(PacketHeader));
118
119} // namespace net
Definition ShotDebugReport.hpp:56
constexpr int k_maxPayloadBytes
Maximum payload bytes a single (non-fragmented) datagram can carry.
Definition PacketHeader.hpp:117
constexpr int k_maxPacketBytes
Maximum total UDP payload (header + data) in bytes.
Definition PacketHeader.hpp:58
constexpr uint16_t k_protocolMagic
Magic bytes identifying our protocol. ASCII "G2" little-endian.
Definition PacketHeader.hpp:48
ChannelId
Per-channel reliability + ordering semantics.
Definition PacketHeader.hpp:80
@ ReliableOrdered
Retransmit until acked, in-order delivery.
Definition PacketHeader.hpp:91
@ Unreliable
No reliability.
Definition PacketHeader.hpp:83
@ ReliableUnordered
Retransmit until acked, no ordering required. Future: RPC.
Definition PacketHeader.hpp:94
@ UnreliableSequenced
No retransmit, but receiver discards packets older than the newest sequence already seen.
Definition PacketHeader.hpp:87
@ Count
Definition PacketHeader.hpp:96
constexpr uint8_t k_protocolVersion
Wire-format version. Bump on any layout change.
Definition PacketHeader.hpp:51
PacketKind
Packet kind discriminator (PacketHeader::kind field).
Definition PacketHeader.hpp:62
@ Payload
Application data ride this — snapshots, inputs, events.
Definition PacketHeader.hpp:64
@ KeepAlive
Definition PacketHeader.hpp:72
@ Disconnect
Definition PacketHeader.hpp:71
@ ConnectionAccepted
Definition PacketHeader.hpp:70
@ ConnectionRequest
Future: connection handshake, keep-alive, disconnect.
Definition PacketHeader.hpp:69
16-byte header at the start of every UDP datagram we send.
Definition PacketHeader.hpp:102
uint8_t flags
bit 0 = fragmented, bit 1 = encrypted (future)
Definition PacketHeader.hpp:109
uint16_t _pad
Reserved; zero. Brings the header to 16 bytes.
Definition PacketHeader.hpp:111
uint16_t fragmentInfo
hi 8 = fragment index, lo 8 = count; 0 if not fragmented
Definition PacketHeader.hpp:110
uint8_t kind
PacketKind.
Definition PacketHeader.hpp:105
uint8_t channel
ChannelId.
Definition PacketHeader.hpp:108
uint8_t version
k_protocolVersion
Definition PacketHeader.hpp:104
uint16_t magic
k_protocolMagic
Definition PacketHeader.hpp:103
uint16_t sequence
Per-(connection, channel).
Definition PacketHeader.hpp:107
uint32_t connectionId
Server-assigned; 0 pre-handshake.
Definition PacketHeader.hpp:106