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_
 | 
						|
 |