5 #ifndef __ENET_ENET_H__
6 #define __ENET_ENET_H__
26 #define ENET_VERSION_MAJOR 1
27 #define ENET_VERSION_MINOR 3
28 #define ENET_VERSION_PATCH 3
29 #define ENET_VERSION_CREATE(major, minor, patch) (((major)<<16) | ((minor)<<8) | (patch))
30 #define ENET_VERSION ENET_VERSION_CREATE(ENET_VERSION_MAJOR, ENET_VERSION_MINOR, ENET_VERSION_PATCH)
34 typedef enum _ENetSocketType
36 ENET_SOCKET_TYPE_STREAM = 1,
37 ENET_SOCKET_TYPE_DATAGRAM = 2
40 typedef enum _ENetSocketWait
42 ENET_SOCKET_WAIT_NONE = 0,
43 ENET_SOCKET_WAIT_SEND = (1 << 0),
44 ENET_SOCKET_WAIT_RECEIVE = (1 << 1)
47 typedef enum _ENetSocketOption
49 ENET_SOCKOPT_NONBLOCK = 1,
50 ENET_SOCKOPT_BROADCAST = 2,
51 ENET_SOCKOPT_RCVBUF = 3,
52 ENET_SOCKOPT_SNDBUF = 4,
53 ENET_SOCKOPT_REUSEADDR = 5
106 typedef void (ENET_CALLBACK * ENetPacketFreeCallback) (
struct _ENetPacket *);
170 typedef enum _ENetPeerState
172 ENET_PEER_STATE_DISCONNECTED = 0,
173 ENET_PEER_STATE_CONNECTING = 1,
174 ENET_PEER_STATE_ACKNOWLEDGING_CONNECT = 2,
175 ENET_PEER_STATE_CONNECTION_PENDING = 3,
176 ENET_PEER_STATE_CONNECTION_SUCCEEDED = 4,
177 ENET_PEER_STATE_CONNECTED = 5,
178 ENET_PEER_STATE_DISCONNECT_LATER = 6,
179 ENET_PEER_STATE_DISCONNECTING = 7,
180 ENET_PEER_STATE_ACKNOWLEDGING_DISCONNECT = 8,
181 ENET_PEER_STATE_ZOMBIE = 9
184 #ifndef ENET_BUFFER_MAXIMUM
185 #define ENET_BUFFER_MAXIMUM (1 + 2 * ENET_PROTOCOL_MAXIMUM_PACKET_COMMANDS)
190 ENET_HOST_RECEIVE_BUFFER_SIZE = 256 * 1024,
191 ENET_HOST_SEND_BUFFER_SIZE = 256 * 1024,
192 ENET_HOST_BANDWIDTH_THROTTLE_INTERVAL = 1000,
193 ENET_HOST_DEFAULT_MTU = 1400,
195 ENET_PEER_DEFAULT_ROUND_TRIP_TIME = 500,
196 ENET_PEER_DEFAULT_PACKET_THROTTLE = 32,
197 ENET_PEER_PACKET_THROTTLE_SCALE = 32,
198 ENET_PEER_PACKET_THROTTLE_COUNTER = 7,
199 ENET_PEER_PACKET_THROTTLE_ACCELERATION = 2,
200 ENET_PEER_PACKET_THROTTLE_DECELERATION = 2,
201 ENET_PEER_PACKET_THROTTLE_INTERVAL = 5000,
202 ENET_PEER_PACKET_LOSS_SCALE = (1 << 16),
203 ENET_PEER_PACKET_LOSS_INTERVAL = 10000,
204 ENET_PEER_WINDOW_SIZE_SCALE = 64 * 1024,
205 ENET_PEER_TIMEOUT_LIMIT = 32,
206 ENET_PEER_TIMEOUT_MINIMUM = 5000,
207 ENET_PEER_TIMEOUT_MAXIMUM = 30000,
208 ENET_PEER_PING_INTERVAL = 500,
209 ENET_PEER_UNSEQUENCED_WINDOWS = 64,
210 ENET_PEER_UNSEQUENCED_WINDOW_SIZE = 1024,
211 ENET_PEER_FREE_UNSEQUENCED_WINDOWS = 32,
212 ENET_PEER_RELIABLE_WINDOWS = 16,
213 ENET_PEER_RELIABLE_WINDOW_SIZE = 0x1000,
214 ENET_PEER_FREE_RELIABLE_WINDOWS = 8
222 enet_uint16 reliableWindows [ENET_PEER_RELIABLE_WINDOWS];
226 ENetList incomingUnreliableCommands;
284 ENetList outgoingUnreliableCommands;
289 enet_uint32 unsequencedWindow [ENET_PEER_UNSEQUENCED_WINDOW_SIZE / 32];
308 typedef enet_uint32 (ENET_CALLBACK * ENetChecksumCallback) (
const ENetBuffer * buffers,
size_t bufferCount);
335 int recalculateBandwidthLimits;
344 ENetProtocol commands [ENET_PROTOCOL_MAXIMUM_PACKET_COMMANDS];
350 enet_uint8 packetData [2][ENET_PROTOCOL_MAXIMUM_MTU];
353 size_t receivedDataLength;
448 ENET_API ENetSocket enet_socket_create (ENetSocketType);
449 ENET_API
int enet_socket_bind (ENetSocket,
const ENetAddress *);
450 ENET_API
int enet_socket_listen (ENetSocket,
int);
451 ENET_API ENetSocket enet_socket_accept (ENetSocket,
ENetAddress *);
452 ENET_API
int enet_socket_connect (ENetSocket,
const ENetAddress *);
456 ENET_API
int enet_socket_set_option (ENetSocket, ENetSocketOption,
int);
457 ENET_API
void enet_socket_destroy (ENetSocket);
458 ENET_API
int enet_socketset_select (ENetSocket, ENetSocketSet *, ENetSocketSet *,
enet_uint32);
513 extern void enet_host_bandwidth_throttle (
ENetHost *);
524 extern void enet_peer_reset_queues (
ENetPeer *);
532 ENET_API
void * enet_range_coder_create (
void);
533 ENET_API
void enet_range_coder_destroy (
void *);
534 ENET_API
size_t enet_range_coder_compress (
void *,
const ENetBuffer *,
size_t,
size_t,
enet_uint8 *,
size_t);
535 ENET_API
size_t enet_range_coder_decompress (
void *,
const enet_uint8 *,
size_t,
enet_uint8 *,
size_t);
537 extern size_t enet_protocol_command_size (
enet_uint8);