/* * IXNetSystem.h * Author: Benjamin Sergeant * Copyright (c) 2019 Machine Zone. All rights reserved. */ #pragma once #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #include #include #include #include // Define our own poll on Windows, as a wrapper on top of select typedef unsigned long int nfds_t; // mingw does not know about poll so mock it #if defined(__GNUC__) struct pollfd { int fd; /* file descriptor */ short events; /* requested events */ short revents; /* returned events */ }; #define POLLIN 0x001 /* There is data to read. */ #define POLLOUT 0x004 /* Writing now will not block. */ #define POLLERR 0x008 /* Error condition. */ #define POLLHUP 0x010 /* Hung up. */ #define POLLNVAL 0x020 /* Invalid polling request. */ #endif #else #include #include #include #include #include #include #include #include #include #include #include #include #include #endif // mingw does not have those #if defined(_WIN32) && defined(__GNUC__) const char* inet_ntop(int af, const void* src, char* dst, socklen_t size); int inet_pton(int af, const char* src, void* dst); #endif namespace ix { #ifdef _WIN32 typedef SOCKET socket_t; #else typedef int socket_t; #endif bool initNetSystem(); bool uninitNetSystem(); int poll(struct pollfd* fds, nfds_t nfds, int timeout); } // namespace ix