#ifndef IPC_CLIENT_H_ #define IPC_CLIENT_H_ #include #include #include typedef struct IPCClient IPCClient; /** * This structure contains the details of an IPC Client and pointers for a * linked list */ struct IPCClient { int fd; int subscriptions; char *buffer; uint32_t buffer_size; struct epoll_event event; IPCClient *next; IPCClient *prev; }; typedef IPCClient *IPCClientList; /** * Allocate memory for new IPCClient with the specified file descriptor and * initialize struct. * * @param fd File descriptor of IPC client * * @return Address to allocated IPCClient struct */ IPCClient *ipc_client_new(int fd); /** * Add an IPC Client to the specified list * * @param list Address of the list to add the client to * @param nc Address of the IPCClient */ void ipc_list_add_client(IPCClientList *list, IPCClient *nc); /** * Remove an IPCClient from the specified list * * @param list Address of the list to remove the client from * @param c Address of the IPCClient */ void ipc_list_remove_client(IPCClientList *list, IPCClient *c); /** * Get an IPCClient from the specified IPCClient list * * @param list List to remove the client from * @param fd File descriptor of the IPCClient */ IPCClient *ipc_list_get_client(IPCClientList list, int fd); #endif // IPC_CLIENT_H_