Move the Timer::Holder class to timer.cpp

This commit is contained in:
Gunnar Beutner 2017-11-21 13:03:51 +01:00
parent 300d424459
commit 245feca0e7
2 changed files with 35 additions and 28 deletions

View File

@ -29,11 +29,40 @@
using namespace icinga; using namespace icinga;
namespace icinga {
class TimerHolder {
public:
TimerHolder(Timer *timer)
: m_Timer(timer)
{ }
inline Timer *GetObject(void) const
{
return m_Timer;
}
inline double GetNextUnlocked(void) const
{
return m_Timer->m_Next;
}
operator Timer *(void) const
{
return m_Timer;
}
private:
Timer *m_Timer;
};
}
typedef boost::multi_index_container< typedef boost::multi_index_container<
Timer::Holder, TimerHolder,
boost::multi_index::indexed_by< boost::multi_index::indexed_by<
boost::multi_index::ordered_unique<boost::multi_index::const_mem_fun<Timer::Holder, Timer *, &Timer::Holder::GetObject> >, boost::multi_index::ordered_unique<boost::multi_index::const_mem_fun<TimerHolder, Timer *, &TimerHolder::GetObject> >,
boost::multi_index::ordered_non_unique<boost::multi_index::const_mem_fun<Timer::Holder, double, &Timer::Holder::GetNextUnlocked> > boost::multi_index::ordered_non_unique<boost::multi_index::const_mem_fun<TimerHolder, double, &TimerHolder::GetNextUnlocked> >
> >
> TimerSet; > TimerSet;

View File

@ -26,6 +26,8 @@
namespace icinga { namespace icinga {
class TimerHolder;
/** /**
* A timer that periodically triggers an event. * A timer that periodically triggers an event.
* *
@ -52,31 +54,6 @@ public:
boost::signals2::signal<void(const Timer::Ptr&)> OnTimerExpired; boost::signals2::signal<void(const Timer::Ptr&)> OnTimerExpired;
class Holder {
public:
Holder(Timer *timer)
: m_Timer(timer)
{ }
inline Timer *GetObject(void) const
{
return m_Timer;
}
inline double GetNextUnlocked(void) const
{
return m_Timer->m_Next;
}
operator Timer *(void) const
{
return m_Timer;
}
private:
Timer *m_Timer;
};
private: private:
double m_Interval; /**< The interval of the timer. */ double m_Interval; /**< The interval of the timer. */
double m_Next; /**< When the next event should happen. */ double m_Next; /**< When the next event should happen. */
@ -92,6 +69,7 @@ private:
static void Uninitialize(void); static void Uninitialize(void);
friend class Application; friend class Application;
friend class TimerHolder;
}; };
} }