Socket

lthread_socket

int lthread_socket(int domain, int type, int protocol)

Creates a new socket(2) and sets it to non-blocking.

Parameters can be found in man socket.

lthread_pipe

int lthread_pipe(int fildes[2])

lthread version of pipe(2), with socket set to non-blocking.

lthread_accept

int lthread_accept(int fd, struct sockaddr *, socklen_t *)

lthread version of accept(2). man 2 accept for more details.

lthread_close

int lthread_close(int fd)

lthread version of close(2). man 2 close for more details.

lthread_connect

int lthread_connect(int fd, struct sockaddr *, socklen_t, uint64_t timeout)

lthread version of connect(2) with additional timeout parameter.

Returns:new fd > 0 on success.
Returns:-1 on failure.
Returns:-2 on timeout.

lthread_recv

ssize_t lthread_recv(int fd, void *buf, size_t buf_len, int flags, uint64_t timeout)

lthread version of recv(2), with additional timeout parameter.

Returns:Returns number of bytes read, -1 on failure and -2 on timeout.

lthread_read

ssize_t lthread_read(int fd, void *buf, size_t length, uint64_t timeout)

lthread version of read(2), with additional timeout parameter.

Returns:Returns number of bytes read.
Returns:0 if socket is closed.
Returns:-1 on failure.
Returns:-2 on timeout.

lthread_readline

ssize_t lthread_readline(int fd, char **buf, size_t max, uint64_t timeout)

Keeps reading from fd until it hits a \n or max bytes.

Parameters:
  • fd (int) – file descriptor.
  • **buf (char) –

    Ptr->ptr that will contain the line read(must be freed).

  • max (size_t) – Maximum number of bytes to read before finding \n.
  • timeout – Milliseconds to wait on reading before timing out.
Returns:

Number of bytes read.

Returns:

0 if socket is closed.

Returns:

-1 on failure.

Returns:

-2 on timeout.

lthread_recv_exact

ssize_t lthread_recv_exact(int fd, void *buf, size_t buf_len, int flags, uint64_t timeout)

Blocks until exact number of bytes are read.

Returns:Number of bytes read.
Returns:0 if socket is closed.
Returns:-1 on failure.
Returns:-2 on timeout.

lthread_read_exact

ssize_t lthread_read_exact(int fd, void *buf, size_t length, uint64_t timeout)

Blocks until exact number of bytes are read.

Returns:Number of bytes read.
Returns:0 if socket is closed.
Returns:-1 on failure.
Returns:-2 on timeout.

lthread_recvmsg

ssize_t lthread_recvmsg(int fd, struct msghdr *message, int flags, uint64_t timeout)

lthread version of recvmsg(2). man 2 recvmsg for more details.

Returns:Returns number of bytes read, -1 on failure and -2 on timeout.

lthread_recvfrom

ssize_t lthread_recvfrom(int fd, void *buf, size_t length, int flags, struct sockaddr *address, socklen_t *address_len, uint64_t timeout)

lthread version of recvfrom(2). man 2 recvfrom for more details.

Returns:Returns number of bytes read.
Returns:0 if socket is closed.
Returns:-1 on failure.
Returns:-2 on timeout.

lthread_send

ssize_t lthread_send(int fd, const void *buf, size_t buf_len, int flags)

lthread version of send(2). man 2 send for more details.

lthread_write

ssize_t lthread_write(int fd, const void *buf, size_t buf_len)

lthread version of write(2). man 2 write for more details.

lthread_sendmsg

ssize_t lthread_sendmsg(int fd, const struct msghdr *message, int flags)

lthread version of sendmsg(2). man 2 sendmsg for more details.

lthread_sendto

ssize_t lthread_sendto(int fd, const void *buf, size_t length, int flags, const struct sockaddr *dest_addr, socklen_t dest_len)

lthread version of sendto(2). man 2 sendto for more details.

lthread_writev

ssize_t lthread_writev(int fd, struct iovec *iov, int iovcnt)

lthread version of writev(2). man 2 writev for more details.

lthread_wait_read

int lthread_wait_read(int fd, int timeout_ms)

Waits for an fd to become readable.

Returns:0 on success.
Returns:-2 on timeout.

lthread_wait_write

int lthread_wait_write(int fd, int timeout_ms)

Waits for an fd to become writable.

Returns:0 on success.
Returns:-2 on timeout.

lthread_poll

int lthread_poll(struct pollfd *fds, nfds_t nfds, int timeout)

Lthread version of poll(2)

Returns:-1 on poll(2) error (when timeout == 0).
Returns:0 on timeout.
Returns:> 0 to indicate the # of fds returned.

Note

If timeout == 0, poll(2) is called directly and the lthread never goes to sleep.