Fix Build-Depends in debian/control
[senf.git] / Scheduler / TimerSource.hh
index f17c6fc..c520348 100644 (file)
@@ -86,16 +86,37 @@ namespace detail {
     {
     public:
         virtual void timeout(ClockService::clock_type timeout);
-        virtual void disableTimeout();
+        virtual void notimeout();
+
+        virtual void enable();
+        virtual void disable();
     };
 
+#ifdef HAVE_TIMERFD
     class TimerFDTimerSource
-        : public TimerSource
+        : public detail::FdManager::Event, public TimerSource
     {
     public:
+        TimerFDTimerSource();
+        ~TimerFDTimerSource();
+
         virtual void timeout(ClockService::clock_type timeout);
-        virtual void disableTimeout();
+        virtual void notimeout();
+
+        virtual void enable();
+        virtual void disable();
+
+        static bool haveTimerFD();
+
+    private:
+        virtual void signal(int events);
+        void reschedule();
+
+        int timerfd_;
+        bool timeoutEnabled_;
+        ClockService::clock_type timeout_;
     };
+#endif
 
 }}}