/* ZNetPacket.hpp Author: Patrick Baggett Created: 6/4/2013 Purpose: ZNet packet class, represents a packet License: Copyright 2013, 762 Studios */ #pragma once #ifndef _ZNETPACKET_HPP #define _ZNETPACKET_HPP #include /* ZNetPacket defines a logical packet that is to be sent or has been received. The data is appended at the end of the structure, so getting the address requires pointer manipulation. It does not represent the wire format of what is sent, since packets may be merged. */ struct ZNetPacket { uint32_t dataSize; //< Size of the packet (logically) uint32_t flags; //< The flags. ZNET_TRANSIENT, ZNET_RELIABLE, etc. int32_t refCount; //< Reference count uint8_t* GetData() { return (uint8_t*) ((uintptr_t)this + sizeof(ZNetPacket)); } void AddReference() { refCount++; } void ReleaseReference() { refCount--; if(refCount == 0) free(this); } }; #endif