summaryrefslogtreecommitdiff
path: root/src/event_manager.hh
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-08-28 22:32:15 +0200
committerMaxime Coste <frrrwww@gmail.com>2012-08-28 22:32:15 +0200
commitab47b72dc84e49d9b7e647b08af93020fa510616 (patch)
tree0e86fd66a9bb27030dc140cd488f503f55206a5a /src/event_manager.hh
parentd5dc5dff7f5b971c4c9b8fe4eb3c272762964ffd (diff)
add a poll based EventManager and use it for ncurse client update
Diffstat (limited to 'src/event_manager.hh')
-rw-r--r--src/event_manager.hh29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/event_manager.hh b/src/event_manager.hh
new file mode 100644
index 00000000..c1795983
--- /dev/null
+++ b/src/event_manager.hh
@@ -0,0 +1,29 @@
+#ifndef event_manager_hh_INCLUDED
+#define event_manager_hh_INCLUDED
+
+#include <poll.h>
+
+#include "utils.hh"
+
+namespace Kakoune
+{
+
+using EventHandler = std::function<void (int fd)>;
+
+class EventManager : public Singleton<EventManager>
+{
+public:
+ void watch(int fd, EventHandler handler);
+ void unwatch(int fd);
+
+ void handle_next_events();
+
+private:
+ std::vector<pollfd> m_events;
+ std::vector<EventHandler> m_handlers;
+};
+
+}
+
+#endif // event_manager_hh_INCLUDED
+