Files | |
file | cb_ipcsock.h |
Socket IPC utility functions. | |
Functions | |
int | cb_fdread_timeout (int fd, void *data, int size, int tout_ms) |
read from file descriptor with timeout More... | |
int | cb_ipcsocket_init (CB_SOCKET_T *ipcfd, char *node, char *suffix, char *server_node) |
creats and initializes Unix Domain Socket for IPC More... | |
int | cb_ipcsocket_udp_init (CB_SOCKET_T *ipcfd, char *own_ip, char *server_ip, int server_port) |
open Unix Domain Socket in UDP mode for IPC More... | |
int | cb_ipcsocket_close (CB_SOCKET_T ipcfd, char *node, char *suffix) |
close Unix Domain Socket for IPC More... | |
cb_ipcserverd_t * | cb_ipcsocket_server_init (char *node_ip, char *suffix, uint16_t port) |
initialize the server mode ipc socket More... | |
void | cb_ipcsocket_server_close (cb_ipcserverd_t *ipcsd) |
close the server mode ipc socket More... | |
int | cb_ipcsocket_server_write (cb_ipcserverd_t *ipcsd, uint8_t *data, int size, struct sockaddr *client_address) |
send ipc data to a specific client_address or internally managed IPC clients More... | |
int | cb_ipcsocket_server_write_ddata (cb_ipcserverd_t *ipcsd, void *cbdata, cb_ipcsocket_server_ddatacb ddatacb) |
send ipc data to all clients More... | |
int | cb_ipcsocket_server_read (cb_ipcserverd_t *ipcsd, cb_ipcsocket_server_rdcb ipccb, void *cbdata) |
receive data on the IPC socket. More... | |
CB_SOCKET_T | cb_ipcsocket_getfd (cb_ipcserverd_t *ipcsd) |
return ipc socket fd More... | |
int | cb_ipcsocket_remove_client (cb_ipcserverd_t *ipcsd, struct sockaddr *client_address) |
remove IPC client from the managed list More... | |
cb_ipcclient_commode_t | cb_ipcsocket_get_commode (cb_ipcserverd_t *ipcsd, struct sockaddr *client_address) |
get IPC ipc communication mode More... | |
int | cb_ipcsocket_set_commode (cb_ipcserverd_t *ipcsd, struct sockaddr *client_address, cb_ipcclient_commode_t commode) |
get IPC ipc communication mode More... | |
Typedefs | |
typedef struct cb_ipcserverd | cb_ipcserverd_t |
typedef int(* | cb_ipcsocket_server_ddatacb) (void *cbdata, uint8_t **sdata, int *size, struct sockaddr *addr) |
callback function to get sending data More... | |
typedef int(* | cb_ipcsocket_server_rdcb) (void *cbdata, uint8_t *rdata, int size, struct sockaddr *addr) |
callback function to be called from 'cb_ipcsocket_server_read' More... | |
Enumerations | |
enum | cb_ipcclient_commode_t { CB_IPCCLIENT_DEFAULT = 0, CB_IPCCLIENT_BINARY, CB_IPCCLIENT_TEXT, CB_IPCCLIENT_LAST } |
Macros | |
#define | MAX_IPC_CLIENTS 16 |
#define MAX_IPC_CLIENTS 16 |
typedef struct cb_ipcserverd cb_ipcserverd_t |
typedef int(* cb_ipcsocket_server_ddatacb) (void *cbdata, uint8_t **sdata, int *size, struct sockaddr *addr) |
callback function to get sending data
typedef int(* cb_ipcsocket_server_rdcb) (void *cbdata, uint8_t *rdata, int size, struct sockaddr *addr) |
callback function to be called from 'cb_ipcsocket_server_read'
int cb_fdread_timeout | ( | int | fd, |
void * | data, | ||
int | size, | ||
int | tout_ms | ||
) |
read from file descriptor with timeout
fd | a file descriptor |
data | buffer to read data, which must have more than size bytes |
size | read size |
tout_ms | timeout time in milliseconds |
int cb_ipcsocket_init | ( | CB_SOCKET_T * | ipcfd, |
char * | node, | ||
char * | suffix, | ||
char * | server_node | ||
) |
creats and initializes Unix Domain Socket for IPC
ipcfd | return opened file descriptor |
node | main part of file node i.e /temp/node |
suffix | suffix part of file node, set "" for non suffix |
server_node | if NULL, create a socket without connection. if not NULL, connect to this server_node(must be existing node). |
int cb_ipcsocket_udp_init | ( | CB_SOCKET_T * | ipcfd, |
char * | own_ip, | ||
char * | server_ip, | ||
int | server_port | ||
) |
open Unix Domain Socket in UDP mode for IPC
ipcfd | return opened file descriptor for socket. |
own_ip | NULL for any IF, '127.0.0.1' for local only |
server_ip | NULL in the server mode, set IP in the client mode |
server_port | port number on which the server mode listens |
int cb_ipcsocket_close | ( | CB_SOCKET_T | ipcfd, |
char * | node, | ||
char * | suffix | ||
) |
close Unix Domain Socket for IPC
ipcfd | ipc file descriptor |
node | main part of file node |
suffix | suffix part of file node, set "" for non suffix |
cb_ipcserverd_t* cb_ipcsocket_server_init | ( | char * | node_ip, |
char * | suffix, | ||
uint16_t | port | ||
) |
initialize the server mode ipc socket
node_ip | unix domain socket file node name OR udp socket port IP address |
suffix | suffix part of file node, set "" for non suffix |
port | the local port number for udp mode connection. Set 0 for unix domain socket. |
void cb_ipcsocket_server_close | ( | cb_ipcserverd_t * | ipcsd | ) |
close the server mode ipc socket
ipcsd | the data handle |
int cb_ipcsocket_server_write | ( | cb_ipcserverd_t * | ipcsd, |
uint8_t * | data, | ||
int | size, | ||
struct sockaddr * | client_address | ||
) |
send ipc data to a specific client_address or internally managed IPC clients
ipcsd | the data handle |
data | send data |
size | send data size |
client_address | if set, the data is sent to this client_address, if NULL, the data is sent to all IPC cients depends on 'ipcsd->udpport', client_address is 'sockaddr_in' or 'sockaddr_un' |
int cb_ipcsocket_server_write_ddata | ( | cb_ipcserverd_t * | ipcsd, |
void * | cbdata, | ||
cb_ipcsocket_server_ddatacb | ddatacb | ||
) |
send ipc data to all clients
ipcsd | the data handle |
cbdata | data to be passed with the callback |
ddatacb | callback function to get defered data from the caller |
int cb_ipcsocket_server_read | ( | cb_ipcserverd_t * | ipcsd, |
cb_ipcsocket_server_rdcb | ipccb, | ||
void * | cbdata | ||
) |
receive data on the IPC socket.
ipcsd | the data handle |
ipccb | a callback function to be called with the read data |
cbdata | data to be passed with the callback |
CB_SOCKET_T cb_ipcsocket_getfd | ( | cb_ipcserverd_t * | ipcsd | ) |
return ipc socket fd
int cb_ipcsocket_remove_client | ( | cb_ipcserverd_t * | ipcsd, |
struct sockaddr * | client_address | ||
) |
remove IPC client from the managed list
cb_ipcclient_commode_t cb_ipcsocket_get_commode | ( | cb_ipcserverd_t * | ipcsd, |
struct sockaddr * | client_address | ||
) |
get IPC ipc communication mode
ipcsd | the data handle |
client_address | if set, the data is sent to this client_address, |
int cb_ipcsocket_set_commode | ( | cb_ipcserverd_t * | ipcsd, |
struct sockaddr * | client_address, | ||
cb_ipcclient_commode_t | commode | ||
) |
get IPC ipc communication mode
ipcsd | the data handle |
client_address | if set, the data is sent to this client_address, |
commode | ipc communication mode |