/**
Tasks are used to manage other programs and worker threads involved in the
-build process. They are run asynchronously.
+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:
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;
};