X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FTimerSource.hh;h=c52034838e301e8018f3c3241adb8d6c23bd0dc8;hb=532240d72e09e19e57fac9bb55c2560b9c9e5b97;hp=f17c6fcd48e4b343d08f1d56ff096fc44b3d991e;hpb=8057a9e389e33771aad9c78538f76d0e82ad7adb;p=senf.git diff --git a/Scheduler/TimerSource.hh b/Scheduler/TimerSource.hh index f17c6fc..c520348 100644 --- a/Scheduler/TimerSource.hh +++ b/Scheduler/TimerSource.hh @@ -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 }}}