1 #include <msp/strings/utils.h>
2 #include "chainedtask.h"
7 ChainedTask::ChainedTask(Task *t)
12 ChainedTask::~ChainedTask()
18 void ChainedTask::add_task(Task *t)
23 string ChainedTask::get_command() const
27 append(cmd, "\n", t->get_command());
31 void ChainedTask::start()
36 tasks[current]->start();
39 Task::Status ChainedTask::check()
41 while(current<tasks.size() && !process(tasks[current]->check())) ;
46 Task::Status ChainedTask::wait()
48 while(current<tasks.size() && !process(tasks[current]->wait())) ;
53 bool ChainedTask::process(Status sub_status)
55 if(sub_status==SUCCESS && current+1<tasks.size())
57 // The task succeeded and there's more to run
59 tasks[current]->start();
63 if(sub_status!=RUNNING)
65 // The task is not running anymore and either failed or was the last one
66 current = tasks.size();
67 final_status = sub_status;