diff options
| author | iceyrazor <iceyrazor@mailfence.com> | 2026-10-13 22:00:39 -0500 |
|---|---|---|
| committer | iceyrazor <iceyrazor@mailfence.com> | 2026-10-13 22:00:39 -0500 |
| commit | fb71cdafab9847a15ac67cd56b13d5ada1d7f20e (patch) | |
| tree | 04aea6db708bca1eccbc1011844d1b8cdb7c6da4 /socket_server.h | |
| parent | 1410fa9524845c01d79d137cd1c600f274c43d69 (diff) | |
removed Server and merged it into launch_socket
launch_socket is now socket_server
fixed a bit of error handling for acceptIncoming
Diffstat (limited to 'socket_server.h')
| -rwxr-xr-x | socket_server.h | 57 |
1 files changed, 57 insertions, 0 deletions
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 <unistd.h> +#include <pthread.h> +#include <netinet/in.h> +#include <stdio.h> +#include <sys/socket.h> +#include <poll.h> +#include <stdbool.h> +#include <string.h> +#include <pthread.h> +#include <stdatomic.h> + +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 |
