47 lines
947 B
C++
47 lines
947 B
C++
/*
|
|
ZNetPacket.hpp
|
|
Author: Patrick Baggett <ptbaggett@762studios.com>
|
|
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 <pstdint.h>
|
|
|
|
/*
|
|
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
|
|
|
|
|