#define IH_SENF_Scheduler_TimerEvent_ 1
// Custom includes
+#include <boost/scoped_ptr.hpp>
#include "../boost/intrusive/iset.hpp"
+#include "TimerSource.hh"
///////////////////////////////ih.p////////////////////////////////////////
};
class TimerDispatcher
- : public detail::FdManager::Event,
- public singleton<TimerDispatcher>
+ : public singleton<TimerDispatcher>
{
SENF_LOG_CLASS_AREA();
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 * 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<TimerEvent>,
TimerSetCompare,
false > TimerSet;
TimerSet timers_;
- int timerPipe_[2];
- sigset_t sigSet_;
- bool blocked_;
- timer_t timerId_;
+ boost::scoped_ptr<TimerSource> source_;
friend void senf::scheduler::restart();
friend class singleton<TimerDispatcher>;