• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

protocol.h

Go to the documentation of this file.
00001 
00005 #ifndef __ENET_PROTOCOL_H__
00006 #define __ENET_PROTOCOL_H__
00007 
00008 #include "enet/types.h"
00009 
00010 enum
00011 {
00012    ENET_PROTOCOL_MINIMUM_MTU             = 576,
00013    ENET_PROTOCOL_MAXIMUM_MTU             = 4096,
00014    ENET_PROTOCOL_MAXIMUM_PACKET_COMMANDS = 32,
00015    ENET_PROTOCOL_MINIMUM_WINDOW_SIZE     = 4096,
00016    ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE     = 32768,
00017    ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT   = 1,
00018    ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT   = 255,
00019    ENET_PROTOCOL_MAXIMUM_PEER_ID         = 0xFFF,
00020    ENET_PROTOCOL_MAXIMUM_PACKET_SIZE     = 1024 * 1024 * 1024,
00021    ENET_PROTOCOL_MAXIMUM_FRAGMENT_COUNT  = 1024 * 1024
00022 };
00023 
00024 typedef enum _ENetProtocolCommand
00025 {
00026    ENET_PROTOCOL_COMMAND_NONE               = 0,
00027    ENET_PROTOCOL_COMMAND_ACKNOWLEDGE        = 1,
00028    ENET_PROTOCOL_COMMAND_CONNECT            = 2,
00029    ENET_PROTOCOL_COMMAND_VERIFY_CONNECT     = 3,
00030    ENET_PROTOCOL_COMMAND_DISCONNECT         = 4,
00031    ENET_PROTOCOL_COMMAND_PING               = 5,
00032    ENET_PROTOCOL_COMMAND_SEND_RELIABLE      = 6,
00033    ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE    = 7,
00034    ENET_PROTOCOL_COMMAND_SEND_FRAGMENT      = 8,
00035    ENET_PROTOCOL_COMMAND_SEND_UNSEQUENCED   = 9,
00036    ENET_PROTOCOL_COMMAND_BANDWIDTH_LIMIT    = 10,
00037    ENET_PROTOCOL_COMMAND_THROTTLE_CONFIGURE = 11,
00038    ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE_FRAGMENT = 12,
00039    ENET_PROTOCOL_COMMAND_COUNT              = 13,
00040 
00041    ENET_PROTOCOL_COMMAND_MASK               = 0x0F
00042 } ENetProtocolCommand;
00043 
00044 typedef enum _ENetProtocolFlag
00045 {
00046    ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE = (1 << 7),
00047    ENET_PROTOCOL_COMMAND_FLAG_UNSEQUENCED = (1 << 6),
00048 
00049    ENET_PROTOCOL_HEADER_FLAG_COMPRESSED = (1 << 14),
00050    ENET_PROTOCOL_HEADER_FLAG_SENT_TIME  = (1 << 15),
00051    ENET_PROTOCOL_HEADER_FLAG_MASK       = ENET_PROTOCOL_HEADER_FLAG_COMPRESSED | ENET_PROTOCOL_HEADER_FLAG_SENT_TIME,
00052 
00053    ENET_PROTOCOL_HEADER_SESSION_MASK    = (3 << 12),
00054    ENET_PROTOCOL_HEADER_SESSION_SHIFT   = 12
00055 } ENetProtocolFlag;
00056 
00057 #ifdef _MSC_VER_
00058 #pragma pack(push, 1)
00059 #define ENET_PACKED
00060 #elif defined(__GNUC__)
00061 #define ENET_PACKED __attribute__ ((packed))
00062 #else
00063 #define ENET_PACKED
00064 #endif
00065 
00066 typedef struct _ENetProtocolHeader
00067 {
00068    enet_uint16 peerID;
00069    enet_uint16 sentTime;
00070 } ENET_PACKED ENetProtocolHeader;
00071 
00072 typedef struct _ENetProtocolCommandHeader
00073 {
00074    enet_uint8 command;
00075    enet_uint8 channelID;
00076    enet_uint16 reliableSequenceNumber;
00077 } ENET_PACKED ENetProtocolCommandHeader;
00078 
00079 typedef struct _ENetProtocolAcknowledge
00080 {
00081    ENetProtocolCommandHeader header;
00082    enet_uint16 receivedReliableSequenceNumber;
00083    enet_uint16 receivedSentTime;
00084 } ENET_PACKED ENetProtocolAcknowledge;
00085 
00086 typedef struct _ENetProtocolConnect
00087 {
00088    ENetProtocolCommandHeader header;
00089    enet_uint16 outgoingPeerID;
00090    enet_uint8  incomingSessionID;
00091    enet_uint8  outgoingSessionID;
00092    enet_uint32 mtu;
00093    enet_uint32 windowSize;
00094    enet_uint32 channelCount;
00095    enet_uint32 incomingBandwidth;
00096    enet_uint32 outgoingBandwidth;
00097    enet_uint32 packetThrottleInterval;
00098    enet_uint32 packetThrottleAcceleration;
00099    enet_uint32 packetThrottleDeceleration;
00100    enet_uint32 connectID;
00101    enet_uint32 data;
00102 } ENET_PACKED ENetProtocolConnect;
00103 
00104 typedef struct _ENetProtocolVerifyConnect
00105 {
00106    ENetProtocolCommandHeader header;
00107    enet_uint16 outgoingPeerID;
00108    enet_uint8  incomingSessionID;
00109    enet_uint8  outgoingSessionID;
00110    enet_uint32 mtu;
00111    enet_uint32 windowSize;
00112    enet_uint32 channelCount;
00113    enet_uint32 incomingBandwidth;
00114    enet_uint32 outgoingBandwidth;
00115    enet_uint32 packetThrottleInterval;
00116    enet_uint32 packetThrottleAcceleration;
00117    enet_uint32 packetThrottleDeceleration;
00118    enet_uint32 connectID;
00119 } ENET_PACKED ENetProtocolVerifyConnect;
00120 
00121 typedef struct _ENetProtocolBandwidthLimit
00122 {
00123    ENetProtocolCommandHeader header;
00124    enet_uint32 incomingBandwidth;
00125    enet_uint32 outgoingBandwidth;
00126 } ENET_PACKED ENetProtocolBandwidthLimit;
00127 
00128 typedef struct _ENetProtocolThrottleConfigure
00129 {
00130    ENetProtocolCommandHeader header;
00131    enet_uint32 packetThrottleInterval;
00132    enet_uint32 packetThrottleAcceleration;
00133    enet_uint32 packetThrottleDeceleration;
00134 } ENET_PACKED ENetProtocolThrottleConfigure;
00135 
00136 typedef struct _ENetProtocolDisconnect
00137 {
00138    ENetProtocolCommandHeader header;
00139    enet_uint32 data;
00140 } ENET_PACKED ENetProtocolDisconnect;
00141 
00142 typedef struct _ENetProtocolPing
00143 {
00144    ENetProtocolCommandHeader header;
00145 } ENET_PACKED ENetProtocolPing;
00146 
00147 typedef struct _ENetProtocolSendReliable
00148 {
00149    ENetProtocolCommandHeader header;
00150    enet_uint16 dataLength;
00151 } ENET_PACKED ENetProtocolSendReliable;
00152 
00153 typedef struct _ENetProtocolSendUnreliable
00154 {
00155    ENetProtocolCommandHeader header;
00156    enet_uint16 unreliableSequenceNumber;
00157    enet_uint16 dataLength;
00158 } ENET_PACKED ENetProtocolSendUnreliable;
00159 
00160 typedef struct _ENetProtocolSendUnsequenced
00161 {
00162    ENetProtocolCommandHeader header;
00163    enet_uint16 unsequencedGroup;
00164    enet_uint16 dataLength;
00165 } ENET_PACKED ENetProtocolSendUnsequenced;
00166 
00167 typedef struct _ENetProtocolSendFragment
00168 {
00169    ENetProtocolCommandHeader header;
00170    enet_uint16 startSequenceNumber;
00171    enet_uint16 dataLength;
00172    enet_uint32 fragmentCount;
00173    enet_uint32 fragmentNumber;
00174    enet_uint32 totalLength;
00175    enet_uint32 fragmentOffset;
00176 } ENET_PACKED ENetProtocolSendFragment;
00177 
00178 typedef union _ENetProtocol
00179 {
00180    ENetProtocolCommandHeader header;
00181    ENetProtocolAcknowledge acknowledge;
00182    ENetProtocolConnect connect;
00183    ENetProtocolVerifyConnect verifyConnect;
00184    ENetProtocolDisconnect disconnect;
00185    ENetProtocolPing ping;
00186    ENetProtocolSendReliable sendReliable;
00187    ENetProtocolSendUnreliable sendUnreliable;
00188    ENetProtocolSendUnsequenced sendUnsequenced;
00189    ENetProtocolSendFragment sendFragment;
00190    ENetProtocolBandwidthLimit bandwidthLimit;
00191    ENetProtocolThrottleConfigure throttleConfigure;
00192 } ENET_PACKED ENetProtocol;
00193 
00194 #ifdef _MSC_VER_
00195 #pragma pack(pop)
00196 #endif
00197 
00198 #endif /* __ENET_PROTOCOL_H__ */
00199 

Generated on Tue May 29 2012 10:40:44 for enet by  doxygen 1.7.1