X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FFIFORunner.cci;h=b2f6fe61e70d3c0918953e2599962ee282effa54;hb=01dd08650770a91d832126763adcd409558ce434;hp=585bf6e990a0e6d2b790712b0ce254147fafca45;hpb=989a3b185a4e8854a1a1a01c5b190c9e6dcaf2af;p=senf.git diff --git a/Scheduler/FIFORunner.cci b/Scheduler/FIFORunner.cci index 585bf6e..b2f6fe6 100644 --- a/Scheduler/FIFORunner.cci +++ b/Scheduler/FIFORunner.cci @@ -34,8 +34,12 @@ #define prefix_ inline ///////////////////////////////cci.p/////////////////////////////////////// -prefix_ senf::scheduler::detail::FIFORunner::TaskInfo::TaskInfo(std::string const & name) - : Event(name), runnable_ (false) +/////////////////////////////////////////////////////////////////////////// +// senf::scheduler::detail::FIFORunner::TaskInfo + +prefix_ senf::scheduler::detail::FIFORunner::TaskInfo::TaskInfo(std::string const & name, + Priority priority) + : Event(name), runnable_ (false), priority_ (priority) {} prefix_ senf::scheduler::detail::FIFORunner::TaskInfo::~TaskInfo() @@ -65,9 +69,40 @@ prefix_ bool senf::scheduler::detail::FIFORunner::TaskInfo::v_enabled() return TaskListBase::linked(); } +/////////////////////////////////////////////////////////////////////////// +// senf::scheduler::detail::FIFORunner::NullTask + +prefix_ senf::scheduler::detail::FIFORunner::NullTask::NullTask() + : senf::scheduler::detail::FIFORunner::TaskInfo ("") +{} + +prefix_ senf::scheduler::detail::FIFORunner::NullTask::~NullTask() +{ + if (TaskListBase::linked()) + FIFORunner::instance().dequeue(this); +} + +prefix_ void senf::scheduler::detail::FIFORunner::NullTask::v_run() +{} + +prefix_ char const * senf::scheduler::detail::FIFORunner::NullTask::v_type() + const +{ + return 0; +} + +prefix_ std::string senf::scheduler::detail::FIFORunner::NullTask::v_info() + const +{ + return ""; +} + +/////////////////////////////////////////////////////////////////////////// +// senf::scheduler::detail::FIFORunner + prefix_ void senf::scheduler::detail::FIFORunner::enqueue(TaskInfo * task) { - tasks_.push_back(*task); + tasks_.insert(priorityEnd(task->priority_), *task); #ifdef SENF_DEBUG std::stringstream ss; backtrace(ss, 32);