File RawNetMessage.h

File List > engine > include > RawNetMessage.h

Go to the documentation of this file

#ifndef RAWNETMESSAGE_H
#define RAWNETMESSAGE_H

#include "IntTypes.h"

enum NetRawMessageType
{
    UnreliableDataMessageComplete,
    ReliableDataMessageComplete,
    ReliableDataMessageFragment,
    ReliableDataMessageAck,
};

struct NetReliableMessageHeader
{
    u32 messageIdentifier;
};

struct NetFragmentMessageHeader
{
    u32 fragmentedMsgID;
    u32 fragmentedMsgTotalSize;

    u16 numFragments;

    u16 sequenceNum;
};

void NetMsg_Parse(u8* data, enum NetRawMessageType* pOutType, u8** outBody);

struct NetReliableMessageHeader* NetMsg_GetReliableHeader(u8* data);

struct NetFragmentMessageHeader* NetMsg_GetFragmentHeader(u8* data);

u32 NetMsg_GetAckedIdentifier(u8* data);


int NetMsg_WriteUnreliableCompleteDataPacket(u8* dataOut, u8* dataIn, int dataSize);

u32 NetMsg_GetReliableMessageIdentifier();

int NetMsg_WriteReliableCompleteDataPacket(u8* dataOut, u8* dataIn, int dataSize, u32 messageIdentifier);

int NetMsg_WriteReliableFragmentDataPacket(u8* dataOut, u8* dataIn, int dataSize, u16 numFragments, u16 sequenceNumber, u32 messageIdentifier, u32 fragmentedMsgID, u32 fragmentedMsgTotalSize);

int NetMsg_WriteReliableDataAckPacket(u8* dataOut, u32 messageIdentifier);

int NetMsg_SizeOfHeaders(enum NetRawMessageType msgType);


#endif