X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FFIFORunner.cci;h=585bf6e990a0e6d2b790712b0ce254147fafca45;hb=989a3b185a4e8854a1a1a01c5b190c9e6dcaf2af;hp=209bd99c0fb80f851ebf3e4da76b2b4814ce4ba2;hpb=03516e8371a90f908ce54dedb3c874eec7dd08ff;p=senf.git diff --git a/Scheduler/FIFORunner.cci b/Scheduler/FIFORunner.cci index 209bd99..585bf6e 100644 --- a/Scheduler/FIFORunner.cci +++ b/Scheduler/FIFORunner.cci @@ -34,19 +34,38 @@ #define prefix_ inline ///////////////////////////////cci.p/////////////////////////////////////// -prefix_ senf::scheduler::FIFORunner::TaskInfo::TaskInfo(std::string const & name) - : runnable_ (false), name_ (name) +prefix_ senf::scheduler::detail::FIFORunner::TaskInfo::TaskInfo(std::string const & name) + : Event(name), runnable_ (false) {} -prefix_ senf::scheduler::FIFORunner::TaskInfo::~TaskInfo() +prefix_ senf::scheduler::detail::FIFORunner::TaskInfo::~TaskInfo() {} -prefix_ void senf::scheduler::FIFORunner::TaskInfo::setRunnable() +prefix_ void senf::scheduler::detail::FIFORunner::TaskInfo::setRunnable() { runnable_ = true; } -prefix_ void senf::scheduler::FIFORunner::enqueue(TaskInfo * task) +prefix_ void senf::scheduler::detail::FIFORunner::TaskInfo::run() +{ + countRun(); + // Be sure to run v_run last since the callback may destroy this instance + v_run(); +} + +prefix_ bool senf::scheduler::detail::FIFORunner::TaskInfo::runnable() + const +{ + return runnable_; +} + +prefix_ bool senf::scheduler::detail::FIFORunner::TaskInfo::v_enabled() + const +{ + return TaskListBase::linked(); +} + +prefix_ void senf::scheduler::detail::FIFORunner::enqueue(TaskInfo * task) { tasks_.push_back(*task); #ifdef SENF_DEBUG @@ -56,23 +75,40 @@ prefix_ void senf::scheduler::FIFORunner::enqueue(TaskInfo * task) #endif } -prefix_ void senf::scheduler::FIFORunner::taskTimeout(unsigned ms) +prefix_ void senf::scheduler::detail::FIFORunner::taskTimeout(unsigned ms) { watchdogMs_ = ms; } -prefix_ unsigned senf::scheduler::FIFORunner::taskTimeout() +prefix_ unsigned senf::scheduler::detail::FIFORunner::taskTimeout() const { return watchdogMs_; } -prefix_ unsigned senf::scheduler::FIFORunner::hangCount() +prefix_ unsigned senf::scheduler::detail::FIFORunner::hangCount() const { return hangCount_; } +prefix_ senf::scheduler::detail::FIFORunner::iterator +senf::scheduler::detail::FIFORunner::begin() + const +{ + // We need to filter out elements with e.type() == 0 ... the NullTask temporarily added is such + // an element and must be skipped. + return boost::make_filter_iterator( + EventManager::IteratorFilter(), tasks_.begin(), tasks_.end()); +} + +prefix_ senf::scheduler::detail::FIFORunner::iterator senf::scheduler::detail::FIFORunner::end() + const +{ + return boost::make_filter_iterator( + EventManager::IteratorFilter(), tasks_.end(), tasks_.end()); +} + ///////////////////////////////cci.e/////////////////////////////////////// #undef prefix_