#include "task.h" #include #include Task::Task(const std::vector& depends) : dependsStr(depends) { } void Task::registerDepTasks(const std::list>& tasks) { for(auto const& depStr : dependsStr) { for(const auto& task : tasks) { if(task->target() == depStr) { dependsTasks.push_back(task); } } } } bool Task::dirty() { for(const auto& task : dependsTasks) { if(task->dirty()) { return true; } } return dirtyInner(); } bool Task::ready() { for(const auto& task : dependsTasks) { if(task->dirty() && !task->done()) { return false; } } return true; } int Task::run() { if(is_done.load()) { return 0; } auto ret = runInner(); if(ret == 0) { is_done.store(true); } return ret; } bool Task::done() const { return is_done.load(); }