From fb71cdafab9847a15ac67cd56b13d5ada1d7f20e Mon Sep 17 00:00:00 2001 From: iceyrazor Date: Tue, 13 Oct 2026 22:00:39 -0500 Subject: rwlocking removed Server and merged it into launch_socket launch_socket is now socket_server fixed a bit of error handling for acceptIncoming --- socket_server.h | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100755 socket_server.h (limited to 'socket_server.h') diff --git a/socket_server.h b/socket_server.h new file mode 100755 index 0000000..222de11 --- /dev/null +++ b/socket_server.h @@ -0,0 +1,57 @@ +#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 -- cgit v1.3