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

Generated on Wed Feb 9 2011 21:31:05 for enet by  doxygen 1.7.1