X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftask.h;h=e7e37e3f04423d525afdf44e00a2e9c854c5c4b1;hb=c3fa3cda6a700d739872025194e9a6b530ac8764;hp=d2cf5a4ccec91b78e051b8cca8577ba9762f6dc6;hpb=338eefb513953ae55e8e3614c009c242ba8ad74e;p=builder.git diff --git a/source/task.h b/source/task.h index d2cf5a4..e7e37e3 100644 --- a/source/task.h +++ b/source/task.h @@ -1,8 +1,14 @@ #ifndef TASK_H_ #define TASK_H_ +#include #include +/** +Tasks are used to manage other programs and worker threads involved in the +build process. They are run asynchronously by default, but a wait() method is +provided should it be necessary to wait for a task to finish. +*/ class Task { public: @@ -20,7 +26,18 @@ protected: public: virtual ~Task() { } + /** Returns the command being executed for this task. Only makes sense if + an external command is involved. */ + virtual std::string get_command() const = 0; + + /// Starts the task. + virtual void start() = 0; + + /// Checks the status of the task and immediately returns. virtual Status check() = 0; + + /// Waits for the task to finish and returns its final status. + virtual Status wait() = 0; }; #endif