ScummVM API documentation
enet.h File Reference

ENet public header file. More...

#include <stdlib.h>
#include "unix.h"
#include "types.h"
#include "protocol.h"
#include "list.h"
#include "callbacks.h"

Go to the source code of this file.

Classes

struct  _ENetAddress
 
struct  _ENetPacket
 
struct  _ENetAcknowledgement
 
struct  _ENetOutgoingCommand
 
struct  _ENetIncomingCommand
 
struct  _ENetChannel
 
struct  _ENetPeer
 
struct  _ENetCompressor
 
struct  _ENetHost
 
struct  _ENetEvent
 

Macros

#define ENET_VERSION_MAJOR   1
 
#define ENET_VERSION_MINOR   3
 
#define ENET_VERSION_PATCH   17
 
#define ENET_VERSION_CREATE(major, minor, patch)   (((major)<<16) | ((minor)<<8) | (patch))
 
#define ENET_VERSION_GET_MAJOR(version)   (((version)>>16)&0xFF)
 
#define ENET_VERSION_GET_MINOR(version)   (((version)>>8)&0xFF)
 
#define ENET_VERSION_GET_PATCH(version)   ((version)&0xFF)
 
#define ENET_VERSION   ENET_VERSION_CREATE(ENET_VERSION_MAJOR, ENET_VERSION_MINOR, ENET_VERSION_PATCH)
 
#define ENET_HOST_ANY   0
 
#define ENET_HOST_BROADCAST   0xFFFFFFFFU
 
#define ENET_PORT_ANY   0
 
#define ENET_BUFFER_MAXIMUM   (1 + 2 * ENET_PROTOCOL_MAXIMUM_PACKET_COMMANDS)
 

Typedefs

typedef enet_uint32 ENetVersion
 
typedef enum _ENetSocketType ENetSocketType
 
typedef enum _ENetSocketWait ENetSocketWait
 
typedef enum _ENetSocketOption ENetSocketOption
 
typedef enum _ENetSocketShutdown ENetSocketShutdown
 
typedef struct _ENetAddress ENetAddress
 
typedef enum _ENetPacketFlag ENetPacketFlag
 
typedef void(* ENetPacketFreeCallback) (struct _ENetPacket *)
 
typedef struct _ENetPacket ENetPacket
 
typedef struct _ENetAcknowledgement ENetAcknowledgement
 
typedef struct _ENetOutgoingCommand ENetOutgoingCommand
 
typedef struct _ENetIncomingCommand ENetIncomingCommand
 
typedef enum _ENetPeerState ENetPeerState
 
typedef struct _ENetChannel ENetChannel
 
typedef enum _ENetPeerFlag ENetPeerFlag
 
typedef struct _ENetPeer ENetPeer
 
typedef struct _ENetCompressor ENetCompressor
 
typedef enet_uint32(* ENetChecksumCallback) (const ENetBuffer *buffers, size_t bufferCount)
 
typedef int(* ENetInterceptCallback) (struct _ENetHost *host, struct _ENetEvent *event)
 
typedef struct _ENetHost ENetHost
 
typedef enum _ENetEventType ENetEventType
 
typedef struct _ENetEvent ENetEvent
 

Enumerations

enum  _ENetSocketType { ENET_SOCKET_TYPE_STREAM = 1 , ENET_SOCKET_TYPE_DATAGRAM = 2 }
 
enum  _ENetSocketWait { ENET_SOCKET_WAIT_NONE = 0 , ENET_SOCKET_WAIT_SEND = (1 << 0) , ENET_SOCKET_WAIT_RECEIVE = (1 << 1) , ENET_SOCKET_WAIT_INTERRUPT = (1 << 2) }
 
enum  _ENetSocketOption {
  ENET_SOCKOPT_NONBLOCK = 1 , ENET_SOCKOPT_BROADCAST = 2 , ENET_SOCKOPT_RCVBUF = 3 , ENET_SOCKOPT_SNDBUF = 4 ,
  ENET_SOCKOPT_REUSEADDR = 5 , ENET_SOCKOPT_RCVTIMEO = 6 , ENET_SOCKOPT_SNDTIMEO = 7 , ENET_SOCKOPT_ERROR = 8 ,
  ENET_SOCKOPT_NODELAY = 9
}
 
enum  _ENetSocketShutdown { ENET_SOCKET_SHUTDOWN_READ = 0 , ENET_SOCKET_SHUTDOWN_WRITE = 1 , ENET_SOCKET_SHUTDOWN_READ_WRITE = 2 }
 
enum  _ENetPacketFlag {
  ENET_PACKET_FLAG_RELIABLE = (1 << 0) , ENET_PACKET_FLAG_UNSEQUENCED = (1 << 1) , ENET_PACKET_FLAG_NO_ALLOCATE = (1 << 2) , ENET_PACKET_FLAG_UNRELIABLE_FRAGMENT = (1 << 3) ,
  ENET_PACKET_FLAG_SENT = (1<<8)
}
 
enum  _ENetPeerState {
  ENET_PEER_STATE_DISCONNECTED = 0 , ENET_PEER_STATE_CONNECTING = 1 , ENET_PEER_STATE_ACKNOWLEDGING_CONNECT = 2 , ENET_PEER_STATE_CONNECTION_PENDING = 3 ,
  ENET_PEER_STATE_CONNECTION_SUCCEEDED = 4 , ENET_PEER_STATE_CONNECTED = 5 , ENET_PEER_STATE_DISCONNECT_LATER = 6 , ENET_PEER_STATE_DISCONNECTING = 7 ,
  ENET_PEER_STATE_ACKNOWLEDGING_DISCONNECT = 8 , ENET_PEER_STATE_ZOMBIE = 9
}
 
enum  {
  ENET_HOST_RECEIVE_BUFFER_SIZE = 256 * 1024 , ENET_HOST_SEND_BUFFER_SIZE = 256 * 1024 , ENET_HOST_BANDWIDTH_THROTTLE_INTERVAL = 1000 , ENET_HOST_DEFAULT_MTU = 1400 ,
  ENET_HOST_DEFAULT_MAXIMUM_PACKET_SIZE = 32 * 1024 * 1024 , ENET_HOST_DEFAULT_MAXIMUM_WAITING_DATA = 32 * 1024 * 1024 , ENET_PEER_DEFAULT_ROUND_TRIP_TIME = 500 , ENET_PEER_DEFAULT_PACKET_THROTTLE = 32 ,
  ENET_PEER_PACKET_THROTTLE_SCALE = 32 , ENET_PEER_PACKET_THROTTLE_COUNTER = 7 , ENET_PEER_PACKET_THROTTLE_ACCELERATION = 2 , ENET_PEER_PACKET_THROTTLE_DECELERATION = 2 ,
  ENET_PEER_PACKET_THROTTLE_INTERVAL = 5000 , ENET_PEER_PACKET_LOSS_SCALE = (1 << 16) , ENET_PEER_PACKET_LOSS_INTERVAL = 10000 , ENET_PEER_WINDOW_SIZE_SCALE = 64 * 1024 ,
  ENET_PEER_TIMEOUT_LIMIT = 32 , ENET_PEER_TIMEOUT_MINIMUM = 5000 , ENET_PEER_TIMEOUT_MAXIMUM = 30000 , ENET_PEER_PING_INTERVAL = 500 ,
  ENET_PEER_UNSEQUENCED_WINDOWS = 64 , ENET_PEER_UNSEQUENCED_WINDOW_SIZE = 1024 , ENET_PEER_FREE_UNSEQUENCED_WINDOWS = 32 , ENET_PEER_RELIABLE_WINDOWS = 16 ,
  ENET_PEER_RELIABLE_WINDOW_SIZE = 0x1000 , ENET_PEER_FREE_RELIABLE_WINDOWS = 8
}
 
enum  _ENetPeerFlag { ENET_PEER_FLAG_NEEDS_DISPATCH = (1 << 0) }
 
enum  _ENetEventType { ENET_EVENT_TYPE_NONE = 0 , ENET_EVENT_TYPE_CONNECT = 1 , ENET_EVENT_TYPE_DISCONNECT = 2 , ENET_EVENT_TYPE_RECEIVE = 3 }
 

Functions

int enet_initialize (void)
 
int enet_initialize_with_callbacks (ENetVersion version, const ENetCallbacks *inits)
 
void enet_deinitialize (void)
 
ENetVersion enet_linked_version (void)
 
enet_uint32 enet_time_get (void)
 
void enet_time_set (enet_uint32)
 
ENetSocket enet_socket_create (ENetSocketType)
 
int enet_socket_bind (ENetSocket, const ENetAddress *)
 
int enet_socket_get_address (ENetSocket, ENetAddress *)
 
int enet_socket_listen (ENetSocket, int)
 
ENetSocket enet_socket_accept (ENetSocket, ENetAddress *)
 
int enet_socket_connect (ENetSocket, const ENetAddress *)
 
int enet_socket_send (ENetSocket, const ENetAddress *, const ENetBuffer *, size_t)
 
int enet_socket_receive (ENetSocket, ENetAddress *, ENetBuffer *, size_t)
 
int enet_socket_wait (ENetSocket, enet_uint32 *, enet_uint32)
 
int enet_socket_set_option (ENetSocket, ENetSocketOption, int)
 
int enet_socket_get_option (ENetSocket, ENetSocketOption, int *)
 
int enet_socket_shutdown (ENetSocket, ENetSocketShutdown)
 
void enet_socket_destroy (ENetSocket)
 
int enet_socketset_select (ENetSocket, ENetSocketSet *, ENetSocketSet *, enet_uint32)
 
int enet_address_set_host_ip (ENetAddress *address, const char *hostName)
 
int enet_address_set_host (ENetAddress *address, const char *hostName)
 
int enet_address_get_host_ip (const ENetAddress *address, char *hostName, size_t nameLength)
 
int enet_address_get_host (const ENetAddress *address, char *hostName, size_t nameLength)
 
ENetPacket * enet_packet_create (const void *, size_t, enet_uint32)
 
void enet_packet_destroy (ENetPacket *)
 
int enet_packet_resize (ENetPacket *, size_t)
 
enet_uint32 enet_crc32 (const ENetBuffer *, size_t)
 
ENetHost * enet_host_create (const ENetAddress *, size_t, size_t, enet_uint32, enet_uint32)
 
void enet_host_destroy (ENetHost *)
 
ENetPeer * enet_host_connect (ENetHost *, const ENetAddress *, size_t, enet_uint32)
 
int enet_host_check_events (ENetHost *, ENetEvent *)
 
int enet_host_service (ENetHost *, ENetEvent *, enet_uint32)
 
void enet_host_flush (ENetHost *)
 
void enet_host_broadcast (ENetHost *, enet_uint8, ENetPacket *)
 
void enet_host_compress (ENetHost *, const ENetCompressor *)
 
int enet_host_compress_with_range_coder (ENetHost *host)
 
void enet_host_channel_limit (ENetHost *, size_t)
 
void enet_host_bandwidth_limit (ENetHost *, enet_uint32, enet_uint32)
 
void enet_host_bandwidth_throttle (ENetHost *)
 
enet_uint32 enet_host_random_seed (void)
 
int enet_peer_send (ENetPeer *, enet_uint8, ENetPacket *)
 
ENetPacket * enet_peer_receive (ENetPeer *, enet_uint8 *channelID)
 
void enet_peer_ping (ENetPeer *)
 
void enet_peer_ping_interval (ENetPeer *, enet_uint32)
 
void enet_peer_timeout (ENetPeer *, enet_uint32, enet_uint32, enet_uint32)
 
void enet_peer_reset (ENetPeer *)
 
void enet_peer_disconnect (ENetPeer *, enet_uint32)
 
void enet_peer_disconnect_now (ENetPeer *, enet_uint32)
 
void enet_peer_disconnect_later (ENetPeer *, enet_uint32)
 
void enet_peer_throttle_configure (ENetPeer *, enet_uint32, enet_uint32, enet_uint32)
 
int enet_peer_throttle (ENetPeer *, enet_uint32)
 
void enet_peer_reset_queues (ENetPeer *)
 
void enet_peer_setup_outgoing_command (ENetPeer *, ENetOutgoingCommand *)
 
ENetOutgoingCommand * enet_peer_queue_outgoing_command (ENetPeer *, const ENetProtocol *, ENetPacket *, enet_uint32, enet_uint16)
 
ENetIncomingCommand * enet_peer_queue_incoming_command (ENetPeer *, const ENetProtocol *, const void *, size_t, enet_uint32, enet_uint32)
 
ENetAcknowledgement * enet_peer_queue_acknowledgement (ENetPeer *, const ENetProtocol *, enet_uint16)
 
void enet_peer_dispatch_incoming_unreliable_commands (ENetPeer *, ENetChannel *, ENetIncomingCommand *)
 
void enet_peer_dispatch_incoming_reliable_commands (ENetPeer *, ENetChannel *, ENetIncomingCommand *)
 
void enet_peer_on_connect (ENetPeer *)
 
void enet_peer_on_disconnect (ENetPeer *)
 
void * enet_range_coder_create (void)
 
void enet_range_coder_destroy (void *)
 
size_t enet_range_coder_compress (void *, const ENetBuffer *, size_t, size_t, enet_uint8 *, size_t)
 
size_t enet_range_coder_decompress (void *, const enet_uint8 *, size_t, enet_uint8 *, size_t)
 
size_t enet_protocol_command_size (enet_uint8)
 

Detailed Description

ENet public header file.

Typedef Documentation

◆ ENetAddress

typedef struct _ENetAddress ENetAddress

Portable internet address structure.

The host must be specified in network byte-order, and the port must be in host byte-order. The constant ENET_HOST_ANY may be used to specify the default server host. The constant ENET_HOST_BROADCAST may be used to specify the broadcast address (255.255.255.255). This makes sense for enet_host_connect, but not for enet_host_create. Once a server responds to a broadcast, the address is updated from ENET_HOST_BROADCAST to the server's actual IP address.

◆ ENetPacketFlag

Packet flag bit constants.

The host must be specified in network byte-order, and the port must be in host byte-order. The constant ENET_HOST_ANY may be used to specify the default server host.

See also
ENetPacket

◆ ENetPacket

typedef struct _ENetPacket ENetPacket

ENet packet structure.

An ENet data packet that may be sent to or received from a peer. The shown fields should only be read and never modified. The data field contains the allocated data for the packet. The dataLength fields specifies the length of the allocated data. The flags field is either 0 (specifying no flags), or a bitwise-or of any combination of the following flags:

ENET_PACKET_FLAG_RELIABLE - packet must be received by the target peer and resend attempts should be made until the packet is delivered

ENET_PACKET_FLAG_UNSEQUENCED - packet will not be sequenced with other packets (not supported for reliable packets)

ENET_PACKET_FLAG_NO_ALLOCATE - packet will not allocate data, and user must supply it instead

ENET_PACKET_FLAG_UNRELIABLE_FRAGMENT - packet will be fragmented using unreliable (instead of reliable) sends if it exceeds the MTU

ENET_PACKET_FLAG_SENT - whether the packet has been sent from all queues it has been entered into

See also
ENetPacketFlag

◆ ENetPeer

typedef struct _ENetPeer ENetPeer

An ENet peer which data packets may be sent or received from.

No fields should be modified unless otherwise specified.

◆ ENetCompressor

An ENet packet compressor for compressing UDP packets before socket sends or receives.

◆ ENetChecksumCallback

typedef enet_uint32( * ENetChecksumCallback) (const ENetBuffer *buffers, size_t bufferCount)

Callback that computes the checksum of the data held in buffers[0:bufferCount-1]

◆ ENetInterceptCallback

typedef int( * ENetInterceptCallback) (struct _ENetHost *host, struct _ENetEvent *event)

Callback for intercepting received raw UDP packets. Should return 1 to intercept, 0 to ignore, or -1 to propagate an error.

◆ ENetHost

typedef struct _ENetHost ENetHost

An ENet host for communicating with peers.

No fields should be modified unless otherwise stated.

See also
enet_host_create()
enet_host_destroy()
enet_host_connect()
enet_host_service()
enet_host_flush()
enet_host_broadcast()
enet_host_compress()
enet_host_compress_with_range_coder()
enet_host_channel_limit()
enet_host_bandwidth_limit()
enet_host_bandwidth_throttle()

◆ ENetEventType

An ENet event type, as specified in ENetEvent.

◆ ENetEvent

typedef struct _ENetEvent ENetEvent

An ENet event as returned by enet_host_service().

See also
enet_host_service

Enumeration Type Documentation

◆ _ENetPacketFlag

Packet flag bit constants.

The host must be specified in network byte-order, and the port must be in host byte-order. The constant ENET_HOST_ANY may be used to specify the default server host.

See also
ENetPacket
Enumerator
ENET_PACKET_FLAG_RELIABLE 

packet must be received by the target peer and resend attempts should be made until the packet is delivered

ENET_PACKET_FLAG_UNSEQUENCED 

packet will not be sequenced with other packets not supported for reliable packets

ENET_PACKET_FLAG_NO_ALLOCATE 

packet will not allocate data, and user must supply it instead

ENET_PACKET_FLAG_UNRELIABLE_FRAGMENT 

packet will be fragmented using unreliable (instead of reliable) sends if it exceeds the MTU

ENET_PACKET_FLAG_SENT 

whether the packet has been sent from all queues it has been entered into

◆ _ENetEventType

An ENet event type, as specified in ENetEvent.

Enumerator
ENET_EVENT_TYPE_NONE 

no event occurred within the specified time limit

ENET_EVENT_TYPE_CONNECT 

a connection request initiated by enet_host_connect has completed.
The peer field contains the peer which successfully connected.

ENET_EVENT_TYPE_DISCONNECT 

a peer has disconnected. This event is generated on a successful completion of a disconnect initiated by enet_peer_disconnect, if a peer has timed out, or if a connection request intialized by enet_host_connect has timed out. The peer field contains the peer which disconnected. The data field contains user supplied data describing the disconnection, or 0, if none is available.

ENET_EVENT_TYPE_RECEIVE 

a packet has been received from a peer. The peer field specifies the peer which sent the packet. The channelID field specifies the channel number upon which the packet was received. The packet field contains the packet that was received; this packet must be destroyed with enet_packet_destroy after use.

Function Documentation

◆ enet_time_get()

enet_uint32 enet_time_get ( void  )

Returns the wall-time in milliseconds. Its initial value is unspecified unless otherwise set.

◆ enet_time_set()

void enet_time_set ( enet_uint32  )

Sets the current wall-time in milliseconds.