#include "server.h"
#include "epoll.h"
+static server_t *listeners[1024];
+static int listener_count = 0;
+
+
static server_t* server_new(void)
{
server_t* server = p_new(server_t, 1);
}
}
+static void server_shutdown(void)
+{
+ for (int i = 0 ; i < listener_count ; ++i) {
+ server_delete(&listeners[i]);
+ }
+}
+
+module_exit(server_shutdown);
+
int start_server(int port, start_listener_t starter, delete_client_t deleter)
{
struct sockaddr_in addr = {
tmp->data = data;
tmp->clear_data = deleter;
epoll_register(sock, EPOLLIN, tmp);
+ listeners[listener_count++] = tmp;
return 0;
}
if (n < 0) {
if (errno != EAGAIN && errno != EINTR) {
UNIXERR("epoll_wait");
- return -1;
+ return EXIT_FAILURE;
}
continue;
}
}
}
}
- return 0;
+ return EXIT_SUCCESS;
}