#pragma once #include #include #include "util.hpp" typedef void (*data_received_cb_t)(SOCKET client, array data); struct tcpserver { SOCKET sock; array client_socks; int max_connections; addrinfo* addr; array cbs; pthread_mutex_t lock; pthread_cond_t connection_ended; pthread_cond_t stop_requested; }; bool create_server(tcpserver* server_out, const char* hostname, int port, int max_connections); void start_server(tcpserver& s); void stop_server(tcpserver& s); void send_data(tcpserver& s, SOCKET client, array data); void register_recv_cb(tcpserver& s, data_received_cb_t cb);