Scheduler: Remove obsolete duplicate 'enabled()' implementations
[senf.git] / Scheduler / FIFORunner.cci
index 209bd99..585bf6e 100644 (file)
 #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_