mirror of
https://github.com/lsalzman/enet
synced 2024-11-21 14:29:05 -07:00
packed structs
This commit is contained in:
parent
ea38380174
commit
2be268a77b
3 changed files with 51 additions and 38 deletions
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
typedef struct
|
typedef struct _ENetCallbacks
|
||||||
{
|
{
|
||||||
void * (ENET_CALLBACK * malloc) (size_t size);
|
void * (ENET_CALLBACK * malloc) (size_t size);
|
||||||
void (ENET_CALLBACK * free) (void * memory);
|
void (ENET_CALLBACK * free) (void * memory);
|
||||||
|
|
|
@ -23,25 +23,25 @@ extern "C"
|
||||||
#include "enet/list.h"
|
#include "enet/list.h"
|
||||||
#include "enet/callbacks.h"
|
#include "enet/callbacks.h"
|
||||||
|
|
||||||
typedef enum
|
typedef enum _ENetVersion
|
||||||
{
|
{
|
||||||
ENET_VERSION = 1
|
ENET_VERSION = 1
|
||||||
} ENetVersion;
|
} ENetVersion;
|
||||||
|
|
||||||
typedef enum
|
typedef enum _ENetSocketType
|
||||||
{
|
{
|
||||||
ENET_SOCKET_TYPE_STREAM = 1,
|
ENET_SOCKET_TYPE_STREAM = 1,
|
||||||
ENET_SOCKET_TYPE_DATAGRAM = 2
|
ENET_SOCKET_TYPE_DATAGRAM = 2
|
||||||
} ENetSocketType;
|
} ENetSocketType;
|
||||||
|
|
||||||
typedef enum
|
typedef enum _ENetSocketWait
|
||||||
{
|
{
|
||||||
ENET_SOCKET_WAIT_NONE = 0,
|
ENET_SOCKET_WAIT_NONE = 0,
|
||||||
ENET_SOCKET_WAIT_SEND = (1 << 0),
|
ENET_SOCKET_WAIT_SEND = (1 << 0),
|
||||||
ENET_SOCKET_WAIT_RECEIVE = (1 << 1)
|
ENET_SOCKET_WAIT_RECEIVE = (1 << 1)
|
||||||
} ENetSocketWait;
|
} ENetSocketWait;
|
||||||
|
|
||||||
typedef enum
|
typedef enum _ENetSocketOption
|
||||||
{
|
{
|
||||||
ENET_SOCKOPT_NONBLOCK = 1,
|
ENET_SOCKOPT_NONBLOCK = 1,
|
||||||
ENET_SOCKOPT_BROADCAST = 2,
|
ENET_SOCKOPT_BROADCAST = 2,
|
||||||
|
@ -83,7 +83,7 @@ typedef struct _ENetAddress
|
||||||
|
|
||||||
@sa ENetPacket
|
@sa ENetPacket
|
||||||
*/
|
*/
|
||||||
typedef enum
|
typedef enum _ENetPacketFlag
|
||||||
{
|
{
|
||||||
/** packet must be received by the target peer and resend attempts should be
|
/** packet must be received by the target peer and resend attempts should be
|
||||||
* made until the packet is delivered */
|
* made until the packet is delivered */
|
||||||
|
@ -161,7 +161,7 @@ typedef struct _ENetIncomingCommand
|
||||||
ENetPacket * packet;
|
ENetPacket * packet;
|
||||||
} ENetIncomingCommand;
|
} ENetIncomingCommand;
|
||||||
|
|
||||||
typedef enum
|
typedef enum _ENetPeerState
|
||||||
{
|
{
|
||||||
ENET_PEER_STATE_DISCONNECTED = 0,
|
ENET_PEER_STATE_DISCONNECTED = 0,
|
||||||
ENET_PEER_STATE_CONNECTING = 1,
|
ENET_PEER_STATE_CONNECTING = 1,
|
||||||
|
@ -319,7 +319,7 @@ typedef struct _ENetHost
|
||||||
/**
|
/**
|
||||||
* An ENet event type, as specified in @ref ENetEvent.
|
* An ENet event type, as specified in @ref ENetEvent.
|
||||||
*/
|
*/
|
||||||
typedef enum
|
typedef enum _ENetEventType
|
||||||
{
|
{
|
||||||
/** no event occurred within the specified time limit */
|
/** no event occurred within the specified time limit */
|
||||||
ENET_EVENT_TYPE_NONE = 0,
|
ENET_EVENT_TYPE_NONE = 0,
|
||||||
|
|
|
@ -19,7 +19,7 @@ enum
|
||||||
ENET_PROTOCOL_MAXIMUM_PEER_ID = 0x7FFF
|
ENET_PROTOCOL_MAXIMUM_PEER_ID = 0x7FFF
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum
|
typedef enum _ENetProtocolCommand
|
||||||
{
|
{
|
||||||
ENET_PROTOCOL_COMMAND_NONE = 0,
|
ENET_PROTOCOL_COMMAND_NONE = 0,
|
||||||
ENET_PROTOCOL_COMMAND_ACKNOWLEDGE = 1,
|
ENET_PROTOCOL_COMMAND_ACKNOWLEDGE = 1,
|
||||||
|
@ -38,7 +38,7 @@ typedef enum
|
||||||
ENET_PROTOCOL_COMMAND_MASK = 0x0F
|
ENET_PROTOCOL_COMMAND_MASK = 0x0F
|
||||||
} ENetProtocolCommand;
|
} ENetProtocolCommand;
|
||||||
|
|
||||||
typedef enum
|
typedef enum _ENetProtocolFlag
|
||||||
{
|
{
|
||||||
ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE = (1 << 7),
|
ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE = (1 << 7),
|
||||||
ENET_PROTOCOL_COMMAND_FLAG_UNSEQUENCED = (1 << 6),
|
ENET_PROTOCOL_COMMAND_FLAG_UNSEQUENCED = (1 << 6),
|
||||||
|
@ -47,28 +47,37 @@ typedef enum
|
||||||
ENET_PROTOCOL_HEADER_FLAG_MASK = 0x8000
|
ENET_PROTOCOL_HEADER_FLAG_MASK = 0x8000
|
||||||
} ENetProtocolFlag;
|
} ENetProtocolFlag;
|
||||||
|
|
||||||
typedef struct
|
#ifdef _MSC_VER_
|
||||||
|
#pragma pack(push, 1)
|
||||||
|
#define ENET_PACKED
|
||||||
|
#elif defined(__GNUC__)
|
||||||
|
#define ENET_PACKED __attribute__ ((packed))
|
||||||
|
#else
|
||||||
|
#define ENET_PACKED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct _ENetProtocolHeader
|
||||||
{
|
{
|
||||||
enet_uint32 checksum;
|
enet_uint32 checksum;
|
||||||
enet_uint16 peerID;
|
enet_uint16 peerID;
|
||||||
enet_uint16 sentTime;
|
enet_uint16 sentTime;
|
||||||
} ENetProtocolHeader;
|
} ENET_PACKED ENetProtocolHeader;
|
||||||
|
|
||||||
typedef struct
|
typedef struct _ENetProtocolCommandHeader
|
||||||
{
|
{
|
||||||
enet_uint8 command;
|
enet_uint8 command;
|
||||||
enet_uint8 channelID;
|
enet_uint8 channelID;
|
||||||
enet_uint16 reliableSequenceNumber;
|
enet_uint16 reliableSequenceNumber;
|
||||||
} ENetProtocolCommandHeader;
|
} ENET_PACKED ENetProtocolCommandHeader;
|
||||||
|
|
||||||
typedef struct
|
typedef struct _ENetProtocolAcknowledge
|
||||||
{
|
{
|
||||||
ENetProtocolCommandHeader header;
|
ENetProtocolCommandHeader header;
|
||||||
enet_uint16 receivedReliableSequenceNumber;
|
enet_uint16 receivedReliableSequenceNumber;
|
||||||
enet_uint16 receivedSentTime;
|
enet_uint16 receivedSentTime;
|
||||||
} ENetProtocolAcknowledge;
|
} ENET_PACKED ENetProtocolAcknowledge;
|
||||||
|
|
||||||
typedef struct
|
typedef struct _ENetProtocolConnect
|
||||||
{
|
{
|
||||||
ENetProtocolCommandHeader header;
|
ENetProtocolCommandHeader header;
|
||||||
enet_uint16 outgoingPeerID;
|
enet_uint16 outgoingPeerID;
|
||||||
|
@ -81,9 +90,9 @@ typedef struct
|
||||||
enet_uint32 packetThrottleAcceleration;
|
enet_uint32 packetThrottleAcceleration;
|
||||||
enet_uint32 packetThrottleDeceleration;
|
enet_uint32 packetThrottleDeceleration;
|
||||||
enet_uint32 sessionID;
|
enet_uint32 sessionID;
|
||||||
} ENetProtocolConnect;
|
} ENET_PACKED ENetProtocolConnect;
|
||||||
|
|
||||||
typedef struct
|
typedef struct _ENetProtocolVerifyConnect
|
||||||
{
|
{
|
||||||
ENetProtocolCommandHeader header;
|
ENetProtocolCommandHeader header;
|
||||||
enet_uint16 outgoingPeerID;
|
enet_uint16 outgoingPeerID;
|
||||||
|
@ -95,55 +104,55 @@ typedef struct
|
||||||
enet_uint32 packetThrottleInterval;
|
enet_uint32 packetThrottleInterval;
|
||||||
enet_uint32 packetThrottleAcceleration;
|
enet_uint32 packetThrottleAcceleration;
|
||||||
enet_uint32 packetThrottleDeceleration;
|
enet_uint32 packetThrottleDeceleration;
|
||||||
} ENetProtocolVerifyConnect;
|
} ENET_PACKED ENetProtocolVerifyConnect;
|
||||||
|
|
||||||
typedef struct
|
typedef struct _ENetProtocolBandwidthLimit
|
||||||
{
|
{
|
||||||
ENetProtocolCommandHeader header;
|
ENetProtocolCommandHeader header;
|
||||||
enet_uint32 incomingBandwidth;
|
enet_uint32 incomingBandwidth;
|
||||||
enet_uint32 outgoingBandwidth;
|
enet_uint32 outgoingBandwidth;
|
||||||
} ENetProtocolBandwidthLimit;
|
} ENET_PACKED ENetProtocolBandwidthLimit;
|
||||||
|
|
||||||
typedef struct
|
typedef struct _ENetProtocolThrottleConfigure
|
||||||
{
|
{
|
||||||
ENetProtocolCommandHeader header;
|
ENetProtocolCommandHeader header;
|
||||||
enet_uint32 packetThrottleInterval;
|
enet_uint32 packetThrottleInterval;
|
||||||
enet_uint32 packetThrottleAcceleration;
|
enet_uint32 packetThrottleAcceleration;
|
||||||
enet_uint32 packetThrottleDeceleration;
|
enet_uint32 packetThrottleDeceleration;
|
||||||
} ENetProtocolThrottleConfigure;
|
} ENET_PACKED ENetProtocolThrottleConfigure;
|
||||||
|
|
||||||
typedef struct
|
typedef struct _ENetProtocolDisconnect
|
||||||
{
|
{
|
||||||
ENetProtocolCommandHeader header;
|
ENetProtocolCommandHeader header;
|
||||||
enet_uint32 data;
|
enet_uint32 data;
|
||||||
} ENetProtocolDisconnect;
|
} ENET_PACKED ENetProtocolDisconnect;
|
||||||
|
|
||||||
typedef struct
|
typedef struct _ENetProtocolPing
|
||||||
{
|
{
|
||||||
ENetProtocolCommandHeader header;
|
ENetProtocolCommandHeader header;
|
||||||
} ENetProtocolPing;
|
} ENET_PACKED ENetProtocolPing;
|
||||||
|
|
||||||
typedef struct
|
typedef struct _ENetProtocolSendReliable
|
||||||
{
|
{
|
||||||
ENetProtocolCommandHeader header;
|
ENetProtocolCommandHeader header;
|
||||||
enet_uint16 dataLength;
|
enet_uint16 dataLength;
|
||||||
} ENetProtocolSendReliable;
|
} ENET_PACKED ENetProtocolSendReliable;
|
||||||
|
|
||||||
typedef struct
|
typedef struct _ENetProtocolSendUnreliable
|
||||||
{
|
{
|
||||||
ENetProtocolCommandHeader header;
|
ENetProtocolCommandHeader header;
|
||||||
enet_uint16 unreliableSequenceNumber;
|
enet_uint16 unreliableSequenceNumber;
|
||||||
enet_uint16 dataLength;
|
enet_uint16 dataLength;
|
||||||
} ENetProtocolSendUnreliable;
|
} ENET_PACKED ENetProtocolSendUnreliable;
|
||||||
|
|
||||||
typedef struct
|
typedef struct _ENetProtocolSendUnsequenced
|
||||||
{
|
{
|
||||||
ENetProtocolCommandHeader header;
|
ENetProtocolCommandHeader header;
|
||||||
enet_uint16 unsequencedGroup;
|
enet_uint16 unsequencedGroup;
|
||||||
enet_uint16 dataLength;
|
enet_uint16 dataLength;
|
||||||
} ENetProtocolSendUnsequenced;
|
} ENET_PACKED ENetProtocolSendUnsequenced;
|
||||||
|
|
||||||
typedef struct
|
typedef struct _ENetProtocolSendFragment
|
||||||
{
|
{
|
||||||
ENetProtocolCommandHeader header;
|
ENetProtocolCommandHeader header;
|
||||||
enet_uint16 startSequenceNumber;
|
enet_uint16 startSequenceNumber;
|
||||||
|
@ -152,9 +161,9 @@ typedef struct
|
||||||
enet_uint32 fragmentNumber;
|
enet_uint32 fragmentNumber;
|
||||||
enet_uint32 totalLength;
|
enet_uint32 totalLength;
|
||||||
enet_uint32 fragmentOffset;
|
enet_uint32 fragmentOffset;
|
||||||
} ENetProtocolSendFragment;
|
} ENET_PACKED ENetProtocolSendFragment;
|
||||||
|
|
||||||
typedef union
|
typedef union _ENetProtocol
|
||||||
{
|
{
|
||||||
ENetProtocolCommandHeader header;
|
ENetProtocolCommandHeader header;
|
||||||
ENetProtocolAcknowledge acknowledge;
|
ENetProtocolAcknowledge acknowledge;
|
||||||
|
@ -168,7 +177,11 @@ typedef union
|
||||||
ENetProtocolSendFragment sendFragment;
|
ENetProtocolSendFragment sendFragment;
|
||||||
ENetProtocolBandwidthLimit bandwidthLimit;
|
ENetProtocolBandwidthLimit bandwidthLimit;
|
||||||
ENetProtocolThrottleConfigure throttleConfigure;
|
ENetProtocolThrottleConfigure throttleConfigure;
|
||||||
} ENetProtocol;
|
} ENET_PACKED ENetProtocol;
|
||||||
|
|
||||||
|
#ifdef _MSC_VER_
|
||||||
|
#pragma pack(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __ENET_PROTOCOL_H__ */
|
#endif /* __ENET_PROTOCOL_H__ */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue