18 #include "C4Version.h"
47 #define PKT_UNPACK(T) unpack_class<T>::unpack
139 if (pPData->ID == eID)
152 return C4NetIOPacket(DecompileToBuf<StdCompilerBinWrite>(*
this), addr);
163 CompileFromBuf<StdCompilerBinRead>(*
this, pStatus ? Pkt.
getPBuf() : Pkt.
getRef());
192 : eID(eID), pPkt(pPkt), fOwnPkt(fTakePkt), pNext(nullptr)
213 if (pPData->ID ==
eID && pPData->Name)
215 return "Unknown Packet Type";
238 { pComp->
excCorrupt(
"C4IDPacket: Data value needed! Packet data missing!");
return; }
245 if (pPData->ID ==
eID && pPData->FnUnpack)
247 pPkt = pPData->FnUnpack(pComp);
251 pComp->
excCorrupt(
"C4IDPacket: could not unpack packet id %02x!",
eID);
265 pFirst(nullptr), pLast(nullptr)
285 assert(!pPkt->
pNext);
292 assert(!pPkt->
pNext);
338 for (pPrev =
pFirst; pPrev && pPrev->
pNext != pPkt; pPrev = pPrev->
pNext) {}
360 while (pComp->
Name(
"IDPacket"))
375 if (!pPkt->
getPkt()) {
delete pPkt;
break; }
398 : iVer(C4XVER1*100 + C4XVER2)
403 : iVer(C4XVER1*100 + C4XVER2),
424 fWrongPassword(fWrongPassword),
494 iPacketCounter(iPacketCounter)
517 : iResID(iResID), Chunks(nChunks)
557 : iReqID(inID), iReqChunk(inChunk)
571 : iCtrlTick(inCtrlTick)
const int32_t C4ClientIDUnknown
const int C4NetMaxClients
const char * PacketNameByID(C4PacketType eID)
const C4PktHandlingData PktHandlingData[]
@ PID_SetScenarioParameter
@ PH_C4Network2ClientList
@ PH_C4GameControlNetwork
StdInsertAdapt< T, I > mkInsertAdapt(T &&rObj, I &&rIns, bool fBefore=true)
StdDecompileAdapt< T > mkDecompileAdapt(const T &rValue)
StdArrayAdapt< T > mkArrayAdapt(T *pArray, int iSize)
StdArrayAdapt< T, M > mkArrayAdaptMap(T *pArray, int iSize, M &&map)
StdIntPackAdapt< T > mkIntPackAdapt(T &rVal)
StdParameterAdapt< T, P > mkParAdapt(T &&rObj, P &&rPar)
StdNamingAdapt< T > mkNamingAdapt(T &&rValue, const char *szName)
const char * getPktName() const
C4PacketBase * getPkt() const
void CompileFunc(StdCompiler *pComp) override
uint8_t getStatus() const
C4NetIOPacket getRef() const
void CompileFunc(StdCompiler *pComp) override
void unpack(const C4NetIOPacket &Pkt, char *pStatus=nullptr)
C4NetIOPacket pack(const C4NetIO::addr_t &addr=C4NetIO::addr_t()) const
void CompileFunc(StdCompiler *pComp) override
void CompileFunc(StdCompiler *pComp) override
void CompileFunc(StdCompiler *pComp) override
void CompileFunc(StdCompiler *pComp) override
C4PacketControlReq(int32_t iCtrlTick=-1)
bool DoFwdTo(int32_t iClient) const
int32_t iClients[C4NetMaxClients]
void CompileFunc(StdCompiler *pComp) override
void SetData(const StdBuf &Pkt)
void AddClient(int32_t iClient)
void SetListType(bool fnNegativeList)
C4ScenarioParameterDefs ScenarioParameterDefs
C4Network2Status GameStatus
C4GameParameters Parameters
void CompileFunc(StdCompiler *pComp) override
C4Network2ResCore Dynamic
void CompileFunc(StdCompiler *pComp) override
C4IDPacket * firstPkt() const
void Delete(C4IDPacket *pPkt)
int32_t getPktCnt() const
void AddHead(C4IDPacket *pPkt)
void Take(C4PacketList &List)
void Add(C4IDPacket *pPkt)
void Append(const C4PacketList &List)
void Remove(C4IDPacket *pPkt)
C4IDPacket * nextPkt(C4IDPacket *pPkt) const
void CompileFunc(StdCompiler *pComp) override
uint32_t getTravelTime() const
C4PacketPing(uint32_t iPacketCounter=0, uint32_t iRemotePacketCounter=0)
bool AddDisID(int32_t iID)
void CompileFunc(StdCompiler *pComp) override
bool isIDPresent(int32_t iID) const
C4PacketResRequest(int32_t iID=-1, int32_t iChunk=-1)
void CompileFunc(StdCompiler *pComp) override
void CompileFunc(StdCompiler *pComp) override
C4Network2ResChunkData Chunks
void CompileFunc(StdCompiler *pComp) override
C4PktBuf & operator=(const C4PktBuf &rCopy)
static C4TimeMilliseconds Now()
void excCorrupt(const char *szMessage,...)
void Value(const T &rStruct)
virtual void NameEnd(bool fBreak=false)
virtual bool isDeserializer()
virtual bool Name(const char *szName)
static C4PacketBase * unpack(StdCompiler *pComp)