#include "TimerEvent.ih"
// Custom includes
+#include <sstream>
//#include "TimerEvent.mpp"
#define prefix_
{
if (pipe(timerPipe_) < 0)
SENF_THROW_SYSTEM_EXCEPTION("pipe()");
- senf::scheduler::FdManager::instance().set(timerPipe_[0], FdManager::EV_READ, this);
+ senf::scheduler::detail::FdManager::instance().set(timerPipe_[0], detail::FdManager::EV_READ, this);
sigemptyset(&sigSet_);
sigaddset(&sigSet_, SIGALRM);
TimerSet::iterator i (timers_.begin());
TimerSet::iterator const i_end (timers_.end());
for (; i != i_end; ++i)
- senf::scheduler::FIFORunner::instance().dequeue(&(*i));
+ senf::scheduler::detail::FIFORunner::instance().dequeue(&(*i));
timer_delete(timerId_);
::signal(SIGALRM, SIG_IGN);
sigprocmask(SIG_UNBLOCK, &sigSet_, 0);
- senf::scheduler::FdManager::instance().remove(timerPipe_[0]);
+ senf::scheduler::detail::FdManager::instance().remove(timerPipe_[0]);
close(timerPipe_[0]);
close(timerPipe_[1]);
}
void senf::scheduler::detail::TimerDispatcher::add(TimerEvent & event)
{
TimerSet::iterator i (timers_.insert(event));
- senf::scheduler::FIFORunner::instance().enqueue(&(*i));
+ senf::scheduler::detail::FIFORunner::instance().enqueue(&(*i));
if (! blocked_)
reschedule();
}
TimerSet::iterator i (TimerSet::current(event));
if (i == timers_.end())
return;
- senf::scheduler::FIFORunner::instance().dequeue(&(*i));
+ senf::scheduler::detail::FIFORunner::instance().dequeue(&(*i));
timers_.erase(i);
if (! blocked_)
reschedule();
return;
TimerSet::iterator i (timers_.begin());
TimerSet::iterator const i_end (timers_.end());
- ClockService::clock_type now (senf::scheduler::FdManager::instance().eventTime());
+ ClockService::clock_type now (senf::scheduler::detail::FdManager::instance().eventTime());
for (; i != i_end && i->timeout_ <= now ; ++i)
- i->runnable = true;
+ i->setRunnable();
}
prefix_ void senf::scheduler::detail::TimerDispatcher::sigHandler(int signal,
///////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::TimerDispatcher::TimerEvent
-prefix_ void senf::scheduler::TimerEvent::run()
+prefix_ void senf::scheduler::TimerEvent::v_run()
{
disable();
cb_();
}
+prefix_ char const * senf::scheduler::TimerEvent::v_type()
+ const
+{
+ return "tm";
+}
+
+prefix_ std::string senf::scheduler::TimerEvent::v_info()
+ const
+{
+ std::stringstream ss;
+ ss.imbue( std::locale(ss.getloc(),
+ new boost::posix_time::time_facet("%Y-%m-%d %H:%M:%S.%f-0000")) );
+ ss << "expire " << ClockService::abstime(timeout_);
+ return ss.str();
+}
+
///////////////////////////////cc.e////////////////////////////////////////
#undef prefix_
//#include "TimerEvent.mpp"