Initial Comit: First commit.
[SauerEngine.git] / src / enet / include / enet / protocol.h
blob363857bcc2f94ed9b21a11951ed800454fe05f5a
1 /**
2 @file protocol.h
3 @brief ENet protocol
4 */
5 #ifndef __ENET_PROTOCOL_H__
6 #define __ENET_PROTOCOL_H__
8 #include "enet/types.h"
10 enum
12 ENET_PROTOCOL_MINIMUM_MTU = 576,
13 ENET_PROTOCOL_MAXIMUM_MTU = 4096,
14 ENET_PROTOCOL_MAXIMUM_PACKET_COMMANDS = 32,
15 ENET_PROTOCOL_MINIMUM_WINDOW_SIZE = 4096,
16 ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE = 32768,
17 ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT = 1,
18 ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT = 255,
19 ENET_PROTOCOL_MAXIMUM_PEER_ID = 0x7FFF
22 typedef enum
24 ENET_PROTOCOL_COMMAND_NONE = 0,
25 ENET_PROTOCOL_COMMAND_ACKNOWLEDGE = 1,
26 ENET_PROTOCOL_COMMAND_CONNECT = 2,
27 ENET_PROTOCOL_COMMAND_VERIFY_CONNECT = 3,
28 ENET_PROTOCOL_COMMAND_DISCONNECT = 4,
29 ENET_PROTOCOL_COMMAND_PING = 5,
30 ENET_PROTOCOL_COMMAND_SEND_RELIABLE = 6,
31 ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE = 7,
32 ENET_PROTOCOL_COMMAND_SEND_FRAGMENT = 8,
33 ENET_PROTOCOL_COMMAND_SEND_UNSEQUENCED = 9,
34 ENET_PROTOCOL_COMMAND_BANDWIDTH_LIMIT = 10,
35 ENET_PROTOCOL_COMMAND_THROTTLE_CONFIGURE = 11,
36 ENET_PROTOCOL_COMMAND_COUNT = 12,
38 ENET_PROTOCOL_COMMAND_MASK = 0x0F
39 } ENetProtocolCommand;
41 typedef enum
43 ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE = (1 << 7),
44 ENET_PROTOCOL_COMMAND_FLAG_UNSEQUENCED = (1 << 6),
46 ENET_PROTOCOL_HEADER_FLAG_SENT_TIME = (1 << 15),
47 ENET_PROTOCOL_HEADER_FLAG_MASK = 0x8000
48 } ENetProtocolFlag;
50 typedef struct
52 enet_uint32 checksum;
53 enet_uint16 peerID;
54 enet_uint16 sentTime;
55 } ENetProtocolHeader;
57 typedef struct
59 enet_uint8 command;
60 enet_uint8 channelID;
61 enet_uint16 reliableSequenceNumber;
62 } ENetProtocolCommandHeader;
64 typedef struct
66 ENetProtocolCommandHeader header;
67 enet_uint16 receivedReliableSequenceNumber;
68 enet_uint16 receivedSentTime;
69 } ENetProtocolAcknowledge;
71 typedef struct
73 ENetProtocolCommandHeader header;
74 enet_uint16 outgoingPeerID;
75 enet_uint16 mtu;
76 enet_uint32 windowSize;
77 enet_uint32 channelCount;
78 enet_uint32 incomingBandwidth;
79 enet_uint32 outgoingBandwidth;
80 enet_uint32 packetThrottleInterval;
81 enet_uint32 packetThrottleAcceleration;
82 enet_uint32 packetThrottleDeceleration;
83 enet_uint32 sessionID;
84 } ENetProtocolConnect;
86 typedef struct
88 ENetProtocolCommandHeader header;
89 enet_uint16 outgoingPeerID;
90 enet_uint16 mtu;
91 enet_uint32 windowSize;
92 enet_uint32 channelCount;
93 enet_uint32 incomingBandwidth;
94 enet_uint32 outgoingBandwidth;
95 enet_uint32 packetThrottleInterval;
96 enet_uint32 packetThrottleAcceleration;
97 enet_uint32 packetThrottleDeceleration;
98 } ENetProtocolVerifyConnect;
100 typedef struct
102 ENetProtocolCommandHeader header;
103 enet_uint32 incomingBandwidth;
104 enet_uint32 outgoingBandwidth;
105 } ENetProtocolBandwidthLimit;
107 typedef struct
109 ENetProtocolCommandHeader header;
110 enet_uint32 packetThrottleInterval;
111 enet_uint32 packetThrottleAcceleration;
112 enet_uint32 packetThrottleDeceleration;
113 } ENetProtocolThrottleConfigure;
115 typedef struct
117 ENetProtocolCommandHeader header;
118 enet_uint32 data;
119 } ENetProtocolDisconnect;
121 typedef struct
123 ENetProtocolCommandHeader header;
124 } ENetProtocolPing;
126 typedef struct
128 ENetProtocolCommandHeader header;
129 enet_uint16 dataLength;
130 } ENetProtocolSendReliable;
132 typedef struct
134 ENetProtocolCommandHeader header;
135 enet_uint16 unreliableSequenceNumber;
136 enet_uint16 dataLength;
137 } ENetProtocolSendUnreliable;
139 typedef struct
141 ENetProtocolCommandHeader header;
142 enet_uint16 unsequencedGroup;
143 enet_uint16 dataLength;
144 } ENetProtocolSendUnsequenced;
146 typedef struct
148 ENetProtocolCommandHeader header;
149 enet_uint16 startSequenceNumber;
150 enet_uint16 dataLength;
151 enet_uint32 fragmentCount;
152 enet_uint32 fragmentNumber;
153 enet_uint32 totalLength;
154 enet_uint32 fragmentOffset;
155 } ENetProtocolSendFragment;
157 typedef union
159 ENetProtocolCommandHeader header;
160 ENetProtocolAcknowledge acknowledge;
161 ENetProtocolConnect connect;
162 ENetProtocolVerifyConnect verifyConnect;
163 ENetProtocolDisconnect disconnect;
164 ENetProtocolPing ping;
165 ENetProtocolSendReliable sendReliable;
166 ENetProtocolSendUnreliable sendUnreliable;
167 ENetProtocolSendUnsequenced sendUnsequenced;
168 ENetProtocolSendFragment sendFragment;
169 ENetProtocolBandwidthLimit bandwidthLimit;
170 ENetProtocolThrottleConfigure throttleConfigure;
171 } ENetProtocol;
173 #endif /* __ENET_PROTOCOL_H__ */