From 509ac16d892aeb5091f68620247f6815d2e4b5f5 Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Tue, 31 Jan 2017 16:21:24 +0100 Subject: Switched to sockets, continuing implementation... --- src/server/server_wait_for_event.c | 53 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/server/server_wait_for_event.c (limited to 'src/server/server_wait_for_event.c') diff --git a/src/server/server_wait_for_event.c b/src/server/server_wait_for_event.c new file mode 100644 index 0000000..b229e6b --- /dev/null +++ b/src/server/server_wait_for_event.c @@ -0,0 +1,53 @@ +#include + +#include +#include +#include + +#include "server.h" + +int ZoO_server_wait_for_event +( + struct ZoO_server server [const static 1] +) +{ + int ready_fds; + const int old_errno = errno; + + /* call to select may alter timeout */ + memset((void *) &(server->socket.timeout), 0, sizeof(struct timeval)); + + server->socket.timeout.tv_sec = ZoO_SERVER_SOCKET_ACCEPT_TIMEOUT_SEC; + + ready_fds = select + ( + (server->socket.file_descriptor + 1), + &(server->socket.as_a_set), + (fd_set *) NULL, + (fd_set *) NULL, + &(server->socket.timeout) + ); + + if (errno == EINTR) + { + ready_fds = 0; + } + + if (ready_fds == -1) + { + fprintf + ( + stderr, + "[F] Unable to wait on server socket: %s.\n", + strerror(errno) + ); + + errno = old_errno; + + return -1; + } + + errno = old_errno; + + return ready_fds; +} -- cgit v1.2.3-70-g09d2