1 #ifndef INTERNALTASK_H_
2 #define INTERNALTASK_H_
5 #include <msp/core/thread.h>
6 #include "libbuilder_api.h"
10 Runs a worker thread. Tools should derive a thread class from
11 InternalTask::Worker. The worker thread must set its status to either SUCCESS
12 or ERROR before terminating.
14 class LIBBUILDER_API InternalTask: public Task
17 class LIBBUILDER_API Worker: public Msp::Thread
19 friend class InternalTask;
22 std::function<bool()> func;
23 volatile Status status = Task::RUNNING;
26 Worker(std::function<bool()> f): func(f) { }
28 Status get_status() const { return status; }
37 InternalTask(std::function<bool()> f): worker(f) { }
40 std::string get_command() const override { return "<internal>"; }
41 void start() override;
42 Status check() override;
43 Status wait() override;