#pragma once #include "ehs/Serializer.h" namespace ehs { enum class NetStatus : UInt_8 { DISCONNECTED, ACTIVE, PENDING, QUEUED }; enum class NetChannelType : UInt_8 { SERVER, CLIENT }; struct Header { Version version = {}; UInt_64 encId = 0; Version encVer = {}; UInt_64 channelId = 0; NetChannelType channelType = NetChannelType::SERVER; Version channelVer = {}; UInt_64 id = 0; UInt_64 fragmentCount = 0; UInt_64 fragment = 0; bool ensure = false; Char_8 token[64] = {}; UInt_64 systemId = 0; UInt_64 opId = 0; }; void WriteHeader(const Header &header, Serializer &data); Header ReadHeader(Serializer &data); struct Packet { Header header; Serializer payload; }; struct Insurance { Header header; Serializer payload; float lastResend; }; } #ifndef EHC_IPV4_PAYLOAD #define EHC_IPV4_PAYLOAD (EHS_IPV4_UDP_PAYLOAD - (UInt_16)sizeof(Header)) #endif #ifndef EHC_IPV6_PAYLOAD #define EHC_IPV6_PAYLOAD (EHS_IPV6_UDP_PAYLOAD - (UInt_16)sizeof(Header)) #endif