usock-tcp (Unix Socket TCP)

Header: udo/usock-tcp.h

Table of contents (click to go)

Macros

Enums

Unions

Structs

  1. udo_usock_tcp

  2. udo_usock_tcp_server_create_info

  3. udo_usock_tcp_client_create_info

Functions

  1. udo_usock_tcp_server_create()

  2. udo_usock_tcp_server_accept()

  3. udo_usock_tcp_client_create()

  4. udo_usock_tcp_client_connect()

  5. udo_usock_tcp_client_send_data()

  6. udo_usock_tcp_get_fd()

  7. udo_usock_tcp_get_unix_path()

  8. udo_usock_tcp_destroy()

  9. udo_usock_tcp_get_sizeof()

  10. udo_usock_tcp_recv_data()

  11. udo_usock_tcp_send_data()

API Documentation

udo_usock_tcp (private)

Structure defining UDO Unix Domain Socket TCP context.
struct udo_usock_tcp
struct udo_log_error_struct err;
bool free;
int fd;
struct sockaddr_un addr;
err
Stores information about the error that occured
for the given context and may later be retrieved
by caller.
free
If structure allocated with calloc(3) member will be
set to true so that, we know to call free(3) when
destroying the context.
fd
File descriptor to the open TCP unix domain socket.
addr
Stores byte information about the TCP unix domain socket
context. Is used for client connect(2) and server accept(2).

udo_usock_tcp_server_create_info

Structure passed to udo_usock_tcp_server_create()
used to define how to create the server.
struct udo_usock_tcp_server_create_info
const char *unix_path;
int connections;
unix_path
Absolute path to unix domain socket.
connections
Amount of connections that may be queued
at a given moment.

udo_usock_tcp_server_create

struct udo_usock_tcp *udo_usock_tcp_server_create(struct udo_usock_tcp *usock, const void *usock_info);
Creates a socket that may be utilized for server socket operations.

Param

Decription

usock

May be NULL or a pointer to a struct udo_usock_tcp.
If NULL memory will be allocated and return to
caller. If not NULL address passed will be used
to store the newly created struct udo_usock_tcp
context.

usock_info

Implementation uses a pointer to a
Returns:
on success: Pointer to a struct udo_usock_tcp
on failure: NULL

udo_usock_tcp_server_accept

int udo_usock_tcp_server_accept(struct udo_usock_tcp *usock, struct sockaddr_un *addr);
Accepts client connections returns file descriptor
to the connected client.

Param

Decription

usock

Must pass a pointer to a struct udo_usock_tcp.

addr

May be NULL or a pointer to a struct sockaddr_un
If not NULL addr is filled in via accept(2) call.
Returns:
on success: Open file descriptor to accepted client
on failure: -1

udo_usock_tcp_client_create_info

Structure passed to udo_usock_tcp_client_create()
used to define how to create the client.
struct udo_usock_tcp_client_create_info
const char *unix_path;
unix_path
Absolute path to unix domain socket.

udo_usock_tcp_client_create

struct udo_usock_tcp *udo_usock_tcp_client_create(struct udo_usock_tcp *usock, const void *usock_info);
Creates a socket that may be utilized for client socket operations.

Param

Decription

usock

May be NULL or a pointer to a struct udo_usock_tcp.
If NULL memory will be allocated and return to
caller. If not NULL address passed will be used
to store the newly created struct udo_usock_tcp
context.

usock_info

Implementation uses a pointer to a
Returns:
on success: Pointer to a struct udo_usock_tcp
on failure: NULL

udo_usock_tcp_client_connect

int udo_usock_tcp_client_connect(struct udo_usock_tcp *usock);
Connects client socket to address provided via

Param

Decription

usock

Must pass a pointer to a struct udo_usock_tcp.
Returns:
on success: 0
on failure: -1

udo_usock_tcp_client_send_data

ssize_t udo_usock_tcp_client_send_data(struct udo_usock_tcp *usock, const void *data, const size_t size, const void *usock_info);
Send data to client socket address provided via

Param

Decription

usock

Must pass a pointer to a struct udo_usock_tcp.

data

Pointer to buffer to send through socket.

size

Size of data to send through socket.

usock_info

Reserved for future usage. For now used
to set the flag argument of send(2).
Returns:
on success: Amount of bytes sent
on failure: # < 0

udo_usock_tcp_get_fd

int udo_usock_tcp_get_fd(struct udo_usock_tcp *usock);
Acquire socket file descriptor associated with
struct udo_usock_tcp context.

Param

Decription

usock

Must pass a pointer to a struct udo_usock_tcp.
Returns:
on success: TCP unix domain socket file descriptor
on failure: -1

udo_usock_tcp_get_unix_path

const char *udo_usock_tcp_get_unix_path(struct udo_usock_tcp *usock);
Acquire textual path to unix domain socket file in string
format associated with struct udo_usock_tcp context.

Param

Decription

usock

Must pass a pointer to a struct udo_usock_tcp.
Returns:
on success: Textual path to unix domain socket
on failure: NULL

udo_usock_tcp_destroy

void udo_usock_tcp_destroy(struct udo_usock_tcp *usock);
Frees any allocated memory and closes FD’s (if open) created after

Param

Decription

usock

Pointer to a valid struct udo_usock_tcp.

udo_usock_tcp_get_sizeof

int udo_usock_tcp_get_sizeof(void);
Returns size of the internal structure. So,
if caller decides to allocate memory outside
of API interface they know the exact amount
of bytes.
Returns:
on success: sizeof(struct udo_usock_tcp)
on failure: sizeof(struct udo_usock_tcp)

udo_usock_tcp_recv_data

ssize_t udo_usock_tcp_recv_data(const int sock_fd, void *data, const size_t size, const void *usock_info);
Receive data from socket file descriptor.

Param

Decription

sock_fd

Socket file descriptor to receive data from.

data

Pointer to buffer to store data received from a socket.

size

Size of data to receive from a socket.

usock_info

Reserved for future usage. For now used
to set the flag argument of recv(2).
Returns:
on success: Amount of bytes received
on failure: # < 0

udo_usock_tcp_send_data

ssize_t udo_usock_tcp_send_data(const int sock_fd, const void *data, const size_t size, const void *usock_info);
Send data to socket file descriptor.

Param

Decription

sock_fd

Socket file descriptor to send data to.

data

Pointer to buffer to send through socket.

size

Size of data to send through socket.

usock_info

Reserved for future usage. For now used
to set the flag argument of send(2).
Returns:
on success: Amount of bytes sent
on failure: # < 0