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;
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<
Timer::Holder,
TimerHolder,
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_non_unique<boost::multi_index::const_mem_fun<Timer::Holder, double, &Timer::Holder::GetNextUnlocked> >
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<TimerHolder, double, &TimerHolder::GetNextUnlocked> >
>
> TimerSet;

View File

@ -26,6 +26,8 @@
namespace icinga {
class TimerHolder;
/**
* A timer that periodically triggers an event.
*
@ -52,31 +54,6 @@ public:
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:
double m_Interval; /**< The interval of the timer. */
double m_Next; /**< When the next event should happen. */
@ -92,6 +69,7 @@ private:
static void Uninitialize(void);
friend class Application;
friend class TimerHolder;
};
}