Include wepoll library

This commit is contained in:
Marcin Mikołajczyk 2025-07-14 20:48:21 +01:00
parent 840baac1e1
commit caa38af40b
3 changed files with 17 additions and 2 deletions

3
.gitmodules vendored
View File

@ -106,3 +106,6 @@
[submodule "externals/libusb"] [submodule "externals/libusb"]
path = externals/libusb path = externals/libusb
url = https://github.com/libusb/libusb-cmake.git url = https://github.com/libusb/libusb-cmake.git
[submodule "externals/wepoll"]
path = externals/wepoll
url = https://github.com/piscisaureus/wepoll.git

1
externals/wepoll vendored Submodule

@ -0,0 +1 @@
Subproject commit 0598a791bf9cbbf480793d778930fc635b044980

View File

@ -10,16 +10,27 @@
#include <vector> #include <vector>
#include <unistd.h> #include <unistd.h>
#ifdef _WIN32
#include <wepoll/wepoll.h>
#endif
#ifdef __linux__ #ifdef __linux__
#include <sys/epoll.h> #include <sys/epoll.h>
#define epoll_close close
#endif #endif
namespace Libraries::Net { namespace Libraries::Net {
#ifdef _WIN32
using epoll_handle = HANDLE;
#elif defined(__linux__)
using epoll_handle = int;
#endif
struct Epoll { struct Epoll {
std::vector<std::pair<u32 /*netId*/, OrbisNetEpollEvent>> events{}; std::vector<std::pair<u32 /*netId*/, OrbisNetEpollEvent>> events{};
const char* name; const char* name;
int epoll_fd; epoll_handle epoll_fd;
explicit Epoll(const char* name_) : name(name_), epoll_fd(epoll_create1(0)) { explicit Epoll(const char* name_) : name(name_), epoll_fd(epoll_create1(0)) {
ASSERT(epoll_fd != -1); ASSERT(epoll_fd != -1);
@ -31,7 +42,7 @@ struct Epoll {
void Destroy() noexcept { void Destroy() noexcept {
events.clear(); events.clear();
close(epoll_fd); epoll_close(epoll_fd);
epoll_fd = -1; epoll_fd = -1;
name = nullptr; name = nullptr;
destroyed = true; destroyed = true;