Skip to main content

socket_create

Discworld driver help

socket_create

Name

socket_create() - create an efun socket

Synopsis

#include <socket_errors.h>

int socket_create( int mode, string | function read_callback );
int socket_create( int mode, string | function read_callback,
string | function close_callback );

Description

socket_create() creates an efun socket. `mode' determines which type of socket is created. Currently supported socket modes are:

MUDfor sending LPC data types using TCP protocol.
STREAMfor sending raw data using TCP protocol.
DATAGRAMfor using UDP protocol.

The argument `read_callback' is the function or the name of a function for the driver to call when the socket gets data from its peer. The read callback should follow this format:

void read_callback( int fd, mixed message )

Where `fd' is the socket which received the data, and `message' is the data which was received.

The argument `close_callback' is the function or the name of a function for the driver to call if the socket closes unexpectedly, i.e. not as the result of a socket_close() call. The close callback should follow this format:

void close_callback( int fd )

Where fd is the socket which has closed. NOTE: `close_callback' is not used with DATAGRAM mode sockets.

socket_create() returns a non-negative descriptor on success, and a negative value indicated below on error.

Errors

These errors are in <socket_errors.h>:

EEMODENOTSUPPSocket mode not supported.
EESOCKETProblem creating socket.
EESETSOCKOPTProblem with setsockopt.
EENONBLOCKProblem setting non-blocking mode.
EENOSOCKSNo more available efun sockets.
EESECURITYSecurity violation attempted.

See also

socket_accept(), socket_bind(), socket_close(), socket_connect(), socket_listen(), socket_write()