#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); 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);