X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FTimerEvent.ih;h=fdb62f2888c3764df454803183b7c2742f9e05ff;hb=92f8630b75f3ef50e73c48cde58645dcd1534e27;hp=5cda3c0c1db309113bacb5bd6930ea2a0f0890f6;hpb=ac90835cbb00ca83a51ab9efb23fdcb75518e808;p=senf.git diff --git a/Scheduler/TimerEvent.ih b/Scheduler/TimerEvent.ih index 5cda3c0..fdb62f2 100644 --- a/Scheduler/TimerEvent.ih +++ b/Scheduler/TimerEvent.ih @@ -23,11 +23,13 @@ /** \file \brief TimerDispatcher internal header */ -#ifndef IH_TimerDispatcher_ -#define IH_TimerDispatcher_ 1 +#ifndef IH_SENF_Scheduler_TimerEvent_ +#define IH_SENF_Scheduler_TimerEvent_ 1 // Custom includes +#include #include "../boost/intrusive/iset.hpp" +#include "TimerSource.hh" ///////////////////////////////ih.p//////////////////////////////////////// @@ -44,8 +46,7 @@ namespace detail { }; class TimerDispatcher - : public detail::FdManager::Event, - public singleton + : public singleton { SENF_LOG_CLASS_AREA(); @@ -56,31 +57,30 @@ namespace detail { void add(TimerEvent & event); void remove(TimerEvent & event); - void unblockSignals(); - void blockSignals(); - + void enable(); + void disable(); + + void prepareRun(); + void reschedule(); + bool empty() const; + void timerSource(std::auto_ptr timerSource); + TimerSource * timerSource(); + protected: private: TimerDispatcher(); ~TimerDispatcher(); - virtual void signal(int events); - static void sigHandler(int signal, ::siginfo_t * siginfo, void *); - void reschedule(); - typedef boost::intrusive::imultiset< TimerSetBase::value_traits, TimerSetCompare, false > TimerSet; TimerSet timers_; - int timerPipe_[2]; - sigset_t sigSet_; - bool blocked_; - timer_t timerId_; + boost::scoped_ptr source_; friend void senf::scheduler::restart(); friend class singleton;