#ifndef socket_server_h #define socket_server_h #include #include #include #include #include #include #include #include #include #include struct AcceptedSocket{ int socketFD; struct sockaddr_in address; int error; bool succ; pthread_t thread_id; atomic_bool shutdown; struct AcceptedSocket *next; }; struct Server{ int domain; int service; int protocol; u_long interface; int port; int backlog; atomic_bool running; pthread_t server_thread_id; pthread_t cleanup_thread_id; struct sockaddr_in address; int socket; pthread_rwlock_t list_lock; struct AcceptedSocket *accepted_socket; void (*on_message)(struct Server *server, struct AcceptedSocket* cur_socket, char message[], ssize_t amountRecv); void (*on_disconnect)(struct Server *server, struct AcceptedSocket* cur_socket); }; struct Server server_constructor(int domain, int service, int protocol, u_long interface, int port, int backlog); int server_close_socket(struct Server *server); int init_socket_server(struct Server *server); void soc_send(struct Server* server, struct AcceptedSocket* cur_socket, char* message); void soc_broadcast(struct Server *server, struct AcceptedSocket* cur_socket, char* message); #endif