63 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef IPC_CLIENT_H_
 | |
| #define IPC_CLIENT_H_
 | |
| 
 | |
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include <sys/epoll.h>
 | |
| 
 | |
| 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_
 | |
| 
 |