#include "sockets.h" #include "globaldefs.h" #if GDEF_OS_WINDOWS #include #elif GDEF_OS_POSIX #include const int SOCKET_ERROR = -1; #else #error "unsupported platform" #endif #if GDEF_OS_MACOS #include #endif int Net_Wait(socket_t *sock, long sec, long usec) { // used for select() #if GDEF_OS_WINDOWS TIMEVAL tout = { sec, usec }; #endif #if GDEF_OS_POSIX timeval tout; tout.tv_sec = sec; tout.tv_usec = usec; #endif // select() will identify if the socket needs an update // if the socket is identified that means there's either a message or the connection has been closed/reset/terminated fd_set readfds; FD_ZERO(&readfds); FD_SET(((unsigned int) sock->socket), &readfds); // from select man page: // n is the highest-numbered descriptor in any of the three sets, plus 1 // (no use on windows) switch (select(sock->socket + 1, &readfds, 0, 0, &tout)) { case SOCKET_ERROR: return -1; case 0: return 0; default: return 1; } }