• 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         = 0x7FFF
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_SENT_TIME = (1 << 15),
00047    ENET_PROTOCOL_HEADER_FLAG_MASK      = 0x8000
00048 } ENetProtocolFlag;
00049 
00050 #ifdef _MSC_VER_
00051 #pragma pack(push, 1)
00052 #define ENET_PACKED
00053 #elif defined(__GNUC__)
00054 #define ENET_PACKED __attribute__ ((packed))
00055 #else
00056 #define ENET_PACKED
00057 #endif
00058 
00059 typedef struct _ENetProtocolHeader
00060 {
00061    enet_uint32 checksum;
00062    enet_uint16 peerID;
00063    enet_uint16 sentTime;
00064 } ENET_PACKED ENetProtocolHeader;
00065 
00066 typedef struct _ENetProtocolCommandHeader
00067 {
00068    enet_uint8 command;
00069    enet_uint8 channelID;
00070    enet_uint16 reliableSequenceNumber;
00071 } ENET_PACKED ENetProtocolCommandHeader;
00072 
00073 typedef struct _ENetProtocolAcknowledge
00074 {
00075    ENetProtocolCommandHeader header;
00076    enet_uint16 receivedReliableSequenceNumber;
00077    enet_uint16 receivedSentTime;
00078 } ENET_PACKED ENetProtocolAcknowledge;
00079 
00080 typedef struct _ENetProtocolConnect
00081 {
00082    ENetProtocolCommandHeader header;
00083    enet_uint16 outgoingPeerID;
00084    enet_uint16 mtu;
00085    enet_uint32 windowSize;
00086    enet_uint32 channelCount;
00087    enet_uint32 incomingBandwidth;
00088    enet_uint32 outgoingBandwidth;
00089    enet_uint32 packetThrottleInterval;
00090    enet_uint32 packetThrottleAcceleration;
00091    enet_uint32 packetThrottleDeceleration;
00092    enet_uint32 sessionID;
00093 } ENET_PACKED ENetProtocolConnect;
00094 
00095 typedef struct _ENetProtocolVerifyConnect
00096 {
00097    ENetProtocolCommandHeader header;
00098    enet_uint16 outgoingPeerID;
00099    enet_uint16 mtu;
00100    enet_uint32 windowSize;
00101    enet_uint32 channelCount;
00102    enet_uint32 incomingBandwidth;
00103    enet_uint32 outgoingBandwidth;
00104    enet_uint32 packetThrottleInterval;
00105    enet_uint32 packetThrottleAcceleration;
00106    enet_uint32 packetThrottleDeceleration;
00107 } ENET_PACKED ENetProtocolVerifyConnect;
00108 
00109 typedef struct _ENetProtocolBandwidthLimit
00110 {
00111    ENetProtocolCommandHeader header;
00112    enet_uint32 incomingBandwidth;
00113    enet_uint32 outgoingBandwidth;
00114 } ENET_PACKED ENetProtocolBandwidthLimit;
00115 
00116 typedef struct _ENetProtocolThrottleConfigure
00117 {
00118    ENetProtocolCommandHeader header;
00119    enet_uint32 packetThrottleInterval;
00120    enet_uint32 packetThrottleAcceleration;
00121    enet_uint32 packetThrottleDeceleration;
00122 } ENET_PACKED ENetProtocolThrottleConfigure;
00123 
00124 typedef struct _ENetProtocolDisconnect
00125 {
00126    ENetProtocolCommandHeader header;
00127    enet_uint32 data;
00128 } ENET_PACKED ENetProtocolDisconnect;
00129 
00130 typedef struct _ENetProtocolPing
00131 {
00132    ENetProtocolCommandHeader header;
00133 } ENET_PACKED ENetProtocolPing;
00134 
00135 typedef struct _ENetProtocolSendReliable
00136 {
00137    ENetProtocolCommandHeader header;
00138    enet_uint16 dataLength;
00139 } ENET_PACKED ENetProtocolSendReliable;
00140 
00141 typedef struct _ENetProtocolSendUnreliable
00142 {
00143    ENetProtocolCommandHeader header;
00144    enet_uint16 unreliableSequenceNumber;
00145    enet_uint16 dataLength;
00146 } ENET_PACKED ENetProtocolSendUnreliable;
00147 
00148 typedef struct _ENetProtocolSendUnsequenced
00149 {
00150    ENetProtocolCommandHeader header;
00151    enet_uint16 unsequencedGroup;
00152    enet_uint16 dataLength;
00153 } ENET_PACKED ENetProtocolSendUnsequenced;
00154 
00155 typedef struct _ENetProtocolSendFragment
00156 {
00157    ENetProtocolCommandHeader header;
00158    enet_uint16 startSequenceNumber;
00159    enet_uint16 dataLength;
00160    enet_uint32 fragmentCount;
00161    enet_uint32 fragmentNumber;
00162    enet_uint32 totalLength;
00163    enet_uint32 fragmentOffset;
00164 } ENET_PACKED ENetProtocolSendFragment;
00165 
00166 typedef union _ENetProtocol
00167 {
00168    ENetProtocolCommandHeader header;
00169    ENetProtocolAcknowledge acknowledge;
00170    ENetProtocolConnect connect;
00171    ENetProtocolVerifyConnect verifyConnect;
00172    ENetProtocolDisconnect disconnect;
00173    ENetProtocolPing ping;
00174    ENetProtocolSendReliable sendReliable;
00175    ENetProtocolSendUnreliable sendUnreliable;
00176    ENetProtocolSendUnsequenced sendUnsequenced;
00177    ENetProtocolSendFragment sendFragment;
00178    ENetProtocolBandwidthLimit bandwidthLimit;
00179    ENetProtocolThrottleConfigure throttleConfigure;
00180 } ENET_PACKED ENetProtocol;
00181 
00182 #ifdef _MSC_VER_
00183 #pragma pack(pop)
00184 #endif
00185 
00186 #endif /* __ENET_PROTOCOL_H__ */
00187 

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