#./fio-stl/004 sock.h
35 public symbols.
#Macros
#FIO_SOCKET_INVALID
#define FIO_SOCKET_INVALID INVALID_SOCKETSentinel value for an invalid socket handle.
Symbol type: macro
#FIO_SOCK_FD_ISVALID
#define FIO_SOCK_FD_ISVALID(fd) ((fio_socket_i)(fd) != FIO_SOCKET_INVALID)Symbol type: macro
#FIO_SOCK_DEFAULT_MAXIMIZE_LIMIT
#define FIO_SOCK_DEFAULT_MAXIMIZE_LIMIT (1ULL << 24)Symbol type: macro
#FIO_SOCK_UNIX
#define FIO_SOCK_UNIX 0Symbol type: macro
#FIO_SOCK_UNIX_PRIVATE
#define FIO_SOCK_UNIX_PRIVATE 0Symbol type: macro
#FIO_SOCK_WAIT_RW
#define FIO_SOCK_WAIT_RW(fd, timeout_) \
fio_sock_wait_io(fd, POLLIN | POLLOUT, timeout_)A helper macro that waits on a single IO with no callbacks (0 = no event)
Symbol type: macro
#FIO_SOCK_WAIT_R
#define FIO_SOCK_WAIT_R(fd, timeout_) fio_sock_wait_io(fd, POLLIN, timeout_)A helper macro that waits on a single IO with no callbacks (0 = no event)
Symbol type: macro
#FIO_SOCK_WAIT_W
#define FIO_SOCK_WAIT_W(fd, timeout_) fio_sock_wait_io(fd, POLLOUT, timeout_)A helper macro that waits on a single IO with no callbacks (0 = no event)
Symbol type: macro
#FIO_SOCK_IS_OPEN
#define FIO_SOCK_IS_OPEN(fd) \
(!(fio_sock_wait_io(fd, (POLLOUT | POLLRDHUP), 0) & \
(POLLRDHUP | POLLHUP | POLLNVAL)))A helper macro that tests if a socket was closed.
Symbol type: macro
#Types
#fio_socket_i
typedef int fio_socket_iNative socket handle type: int on POSIX.
Symbol type: type
#fio_sock_open_flags_e
typedef enum {
FIO_SOCK_SERVER = 0,
FIO_SOCK_CLIENT = 1,
FIO_SOCK_NONBLOCK = 2,
FIO_SOCK_TCP = 4,
FIO_SOCK_UDP = 8,
#ifdef AF_UNIX
FIO_SOCK_UNIX = 16,
FIO_SOCK_UNIX_PRIVATE = (16 | 32),
#else
#define FIO_SOCK_UNIX 0
#define FIO_SOCK_UNIX_PRIVATE 0
#endif
} fio_sock_open_flags_eSocket type flags
Symbol type: type
#Functions
#fio_sock_write
inline ssize_t fio_sock_write(fio_socket_i fd, const void *buf, size_t len)Acts as POSIX write. Use this function for portability with WinSock2.
Symbol type: function
#fio_sock_read
inline ssize_t fio_sock_read(fio_socket_i fd, void *buf, size_t len)Acts as POSIX read. Use this function for portability with WinSock2.
Symbol type: function
#fio_sock_sendto
inline ssize_t fio_sock_sendto(fio_socket_i fd, const void *buf, size_t len, int flags, const struct sockaddr *addr, socklen_t addrlen)Acts as POSIX sendto. Use this function for portability with WinSock2.
Symbol type: function
#fio_sock_recvfrom
inline ssize_t fio_sock_recvfrom(fio_socket_i fd, void *buf, size_t len, int flags, struct sockaddr *addr, socklen_t *addrlen)Acts as POSIX recvfrom. Use this function for portability with WinSock2.
Symbol type: function
#fio_sock_dup
inline fio_socket_i fio_sock_dup(fio_socket_i fd)Acts as POSIX dup. Sets O_CLOEXEC on the new fd.
Symbol type: function
#fio_sock_close
inline int fio_sock_close(fio_socket_i fd)Acts as POSIX close. Use this function for portability with WinSock2.
Symbol type: function
#fio_sock_accept
#define fio_sock_accept(fd, addr, addrlen) accept(fd, addr, addrlen)Acts as POSIX accept. Use this macro for portability with WinSock2.
Note: this may be a macro only / macro wrapper for a function.
Symbol type: macro
#fio_sock_bind
inline int fio_sock_bind(fio_socket_i fd, const struct sockaddr *addr, socklen_t addrlen)Portable bind. POSIX version.
Symbol type: function
#fio_sock_connect
inline int fio_sock_connect(fio_socket_i fd, const struct sockaddr *addr, socklen_t addrlen)Portable connect. POSIX version.
Symbol type: function
#fio_sock_listen
inline int fio_sock_listen(fio_socket_i fd, int backlog)Portable listen. POSIX version.
Symbol type: function
#fio_sock_setsockopt
inline int fio_sock_setsockopt(fio_socket_i fd, int level, int optname, const void *optval, socklen_t optlen)Portable setsockopt. POSIX version.
Symbol type: function
#fio_sock_socketpair
inline int fio_sock_socketpair(fio_socket_i fds[2])Creates a connected socket pair using POSIX socketpair().
Symbol type: function
#fio_sock_pipe
inline int fio_sock_pipe(fio_socket_i fds[2])Creates a POSIX pipe. fds[0] = read end, fds[1] = write end. On Windows, fio_sock_pipe() is defined in the FIO_OS_WIN block above and delegates to fio_sock_socketpair() (loopback TCP).
Symbol type: function
#fio_sock_open
inline fio_socket_i fio_sock_open(const char *restrict address, const char *restrict port, uint16_t flags)Creates a new socket according to the provided flags.
The port string will be ignored when FIO_SOCK_UNIX is set.
Symbol type: function
#fio_sock_open2
fio_socket_i fio_sock_open2(const char *url, uint16_t flags)Creates a new socket, according to the provided flags.
Symbol type: function
#fio_sock_address_new
inline struct addrinfo *fio_sock_address_new(const char *restrict address, const char *restrict port, int sock_type)Attempts to resolve an address to a valid IP6 / IP4 address pointer.
The sock_type element should be a socket type, such as SOCK_DGRAM (UDP)
or SOCK_STREAM (TCP/IP).
The address should be freed using fio_sock_address_free.
Symbol type: function
#fio_sock_address_free
inline void fio_sock_address_free(struct addrinfo *a)Frees the pointer returned by fio_sock_address_new.
Symbol type: function
#fio_sock_peer_addr
fio_buf_info_s fio_sock_peer_addr(fio_socket_i s)Returns a human readable address representation of the socket's peer address.
On error, returns a NULL buffer with zero length.
Buffer lengths are limited to 63 bytes.
This function is limited in its thread safety to 128 threads / calls.
Symbol type: function
#fio_sock_open_local
fio_socket_i fio_sock_open_local(struct addrinfo *addr, int nonblock)Creates a new network socket and binds it to a local address.
Symbol type: function
#fio_sock_open_remote
fio_socket_i fio_sock_open_remote(struct addrinfo *addr, int nonblock)Creates a new network socket and connects it to a remote address.
Symbol type: function
#fio_sock_open_unix
fio_socket_i fio_sock_open_unix(const char *address, uint16_t flags)Creates a new Unix socket and binds it to a local address.
Symbol type: function
#fio_sock_set_non_block
int fio_sock_set_non_block(fio_socket_i fd)Sets a file descriptor / socket to non blocking state.
Symbol type: function
#fio_sock_maximize_limits
size_t fio_sock_maximize_limits(size_t maximum_limit)Attempts to maximize the allowed open file limits. returns known limit
Symbol type: function
#fio_sock_wait_io
short fio_sock_wait_io(fio_socket_i fd, short events, int timeout)Returns 0 on timeout, -1 on error or the events that are valid.
A zero timeout returns immediately.
Possible events include POLLIN | POLLOUT
Possible return values include POLLIN | POLLOUT | POLLHUP | POLLNVAL
Symbol type: function