mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
DirtySDK (EA's Dirty Sockets library) will be used for the LiveAPI implementation, and depends on: EABase, EAThread.
93 lines
3.1 KiB
C
93 lines
3.1 KiB
C
/*H*************************************************************************************************/
|
|
/*!
|
|
|
|
\File commudputil.h
|
|
|
|
\Description
|
|
CommUdp knowledge to be shared with gameserver implementation.
|
|
|
|
\Copyright
|
|
Copyright (c) 2006-2017 Electronic Arts Inc.
|
|
|
|
\Version 1.0 09/01/2017 (mclouatre) First Version
|
|
|
|
*/
|
|
/*************************************************************************************************H*/
|
|
|
|
|
|
#ifndef _commudputil_h
|
|
#define _commudputil_h
|
|
|
|
/*!
|
|
\Moduledef CommUDP CommUDP
|
|
\Modulemember Comm
|
|
*/
|
|
//@{
|
|
|
|
/*** Include files *********************************************************************/
|
|
|
|
#include "DirtySDK/platform.h"
|
|
|
|
/*** Defines ***************************************************************************/
|
|
|
|
//! define protocol packet types
|
|
enum {
|
|
COMMUDP_RAW_PACKET_INIT = 1, // initiate a connection
|
|
COMMUDP_RAW_PACKET_CONN, // confirm a connection
|
|
COMMUDP_RAW_PACKET_DISC, // terminate a connection
|
|
COMMUDP_RAW_PACKET_NAK, // force resend of lost data
|
|
COMMUDP_RAW_PACKET_POKE, // try and poke through firewall
|
|
|
|
COMMUDP_RAW_PACKET_UNREL = 128, // unreliable packet send (must be power of two)
|
|
// 128-255 reserved for unreliable packet sequence
|
|
COMMUDP_RAW_PACKET_DATA = 256, // initial data packet sequence number (must be power of two)
|
|
|
|
/* Width of the sequence window, can be anything provided
|
|
RAW_PACKET_DATA + RAW_PACKET_DATA_WINDOW
|
|
doesn't overlap the meta-data bits. */
|
|
COMMUDP_RAW_PACKET_DATA_WINDOW = (1 << 24) - 256
|
|
};
|
|
|
|
#define COMMUDP_RAW_METATYPE1_SIZE (8)
|
|
#define COMMUDP_SEQ_META_SHIFT (28 - 4)
|
|
#define COMMUDP_SEQ_MULTI_SHIFT (28)
|
|
#define COMMUDP_SEQ_MULTI_INC (1 << COMMUDP_SEQ_MULTI_SHIFT)
|
|
#define COMMUDP_SEQ_MASK (0x00ffffff)
|
|
|
|
|
|
/*** Macros ****************************************************************************/
|
|
|
|
/*** Type Definitions ******************************************************************/
|
|
|
|
/*** Variables *************************************************************************/
|
|
|
|
/*** Functions *************************************************************************/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
// Encodes a subpacket size field.
|
|
DIRTYCODE_API uint32_t CommUDPUtilEncodeSubpacketSize(uint8_t *pBuf, uint32_t uVal);
|
|
|
|
// Decodes a subpacket size field (see _CommUDPEncodeSubpacketSize for notes)
|
|
DIRTYCODE_API uint32_t CommUDPUtilDecodeSubpacketSize(const uint8_t *pBuf, int32_t *pVal);
|
|
|
|
// Extracts metatype from host-ordered commupd header seq field (RawUDPPacketT.body.uSeq)
|
|
DIRTYCODE_API uint32_t CommUDPUtilGetMetaTypeFromSeq(uint32_t uSeq);
|
|
|
|
// Returns the metadata size for a given metadata type.
|
|
DIRTYCODE_API uint32_t CommUDPUtilGetMetaSize(uint32_t uMetaType);
|
|
|
|
// Extracts the number of extra subpackets (excluding the main subpacket) from host - ordered commupd header seq field(RawUDPPacketT.body.uSeq)
|
|
DIRTYCODE_API uint32_t CommUDPUtilGetExtraSubPktCountFromSeq(uint32_t uSeq);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
//@}
|
|
|
|
#endif // _commudputil_h
|
|
|