X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finternaltask.h;h=59545192a5bc82b130820d1e5b9bf05f0e94edc7;hb=451ef4f33b5a57dcb56bd7cb671bed359ac86247;hp=9e52247a258f3429095d73db17a04dd1535c560d;hpb=b5ccba555f4985233532041c34e28d71dd58933f;p=builder.git diff --git a/source/internaltask.h b/source/internaltask.h index 9e52247..5954519 100644 --- a/source/internaltask.h +++ b/source/internaltask.h @@ -4,6 +4,11 @@ #include #include "task.h" +/** +Runs a worker thread. Tools should derive a thread class from +InternalTask::Worker. The worker thread must set its status to either SUCCESS +or ERROR before terminating. +*/ class InternalTask: public Task { public: @@ -12,9 +17,9 @@ public: friend class InternalTask; protected: - Status status; + volatile Status status = Task::RUNNING; - Worker(); + Worker() = default; public: Status get_status() const { return status; } @@ -24,11 +29,13 @@ private: Worker *worker; public: - InternalTask(Worker *); + InternalTask(Worker *w): worker(w) { } ~InternalTask(); - virtual void start(); - virtual Status check(); + std::string get_command() const override { return ""; } + void start() override; + Status check() override; + Status wait() override; }; #endif