aboutsummaryrefslogtreecommitdiffstats
path: root/src/event/Loop.hxx
diff options
context:
space:
mode:
authorDenis Krjuchkov <denis@crazydev.net>2013-11-28 16:37:23 +0600
committerDenis Krjuchkov <denis@crazydev.net>2013-11-28 17:06:16 +0600
commitbb288f02848793a85b74262063d1bd9c7bc7dd78 (patch)
tree8075e0299a670f7f6bee9caaef7c74654d5bd240 /src/event/Loop.hxx
parentf90abe9530ef1075bc9b60e0f08f405d2d86f799 (diff)
downloadmpd-bb288f02848793a85b74262063d1bd9c7bc7dd78.tar.gz
mpd-bb288f02848793a85b74262063d1bd9c7bc7dd78.tar.xz
mpd-bb288f02848793a85b74262063d1bd9c7bc7dd78.zip
event: introduce generic API for internal event loop
Diffstat (limited to 'src/event/Loop.hxx')
-rw-r--r--src/event/Loop.hxx24
1 files changed, 6 insertions, 18 deletions
diff --git a/src/event/Loop.hxx b/src/event/Loop.hxx
index f188c7cc0..029d01245 100644
--- a/src/event/Loop.hxx
+++ b/src/event/Loop.hxx
@@ -25,10 +25,7 @@
#include "Compiler.h"
#ifdef USE_INTERNAL_EVENTLOOP
-#ifdef USE_EPOLL
-#include "system/EPollFD.hxx"
-#endif
-
+#include "PollGroup.hxx"
#include "thread/Mutex.hxx"
#include "WakeFD.hxx"
#include "SocketMonitor.hxx"
@@ -99,13 +96,8 @@ class EventLoop final
bool quit;
-#ifdef USE_EPOLL
- EPollFD epoll;
- static constexpr unsigned MAX_EVENTS = 16;
- unsigned n_events;
- epoll_event events[MAX_EVENTS];
-#endif
-
+ PollGroup poll_group;
+ PollResult poll_result;
#endif
#ifdef USE_GLIB_EVENTLOOP
@@ -140,15 +132,11 @@ public:
void Break();
bool AddFD(int _fd, unsigned flags, SocketMonitor &m) {
-#ifdef USE_EPOLL
- return epoll.Add(_fd, flags, &m);
-#endif
+ return poll_group.Add(_fd, flags, &m);
}
bool ModifyFD(int _fd, unsigned flags, SocketMonitor &m) {
-#ifdef USE_EPOLL
- return epoll.Modify(_fd, flags, &m);
-#endif
+ return poll_group.Modify(_fd, flags, &m);
}
/**
@@ -156,7 +144,7 @@ public:
* has been closed. This is like RemoveFD(), but does not
* attempt to use #EPOLL_CTL_DEL.
*/
- void Abandon(SocketMonitor &m);
+ bool Abandon(int fd, SocketMonitor &m);
bool RemoveFD(int fd, SocketMonitor &m);