summaryrefslogtreecommitdiff
path: root/src/lib/job.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/job.h')
-rw-r--r--src/lib/job.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/lib/job.h b/src/lib/job.h
index 2a77f78f7..b39130479 100644
--- a/src/lib/job.h
+++ b/src/lib/job.h
@@ -26,6 +26,7 @@
#include <string>
#include <boost/thread/mutex.hpp>
+#include <boost/enable_shared_from_this.hpp>
#include <sigc++/sigc++.h>
class Log;
@@ -35,7 +36,7 @@ class Options;
/** @class Job
* @brief A parent class to represent long-running tasks which are run in their own thread.
*/
-class Job
+class Job : public boost::enable_shared_from_this<Job>
{
public:
Job (boost::shared_ptr<const FilmState> s, boost::shared_ptr<const Options> o, Log* l);
@@ -70,6 +71,9 @@ public:
protected:
+ virtual int remaining_time () const;
+
+ /** Description of a job's state */
enum State {
NEW, ///< the job hasn't been started yet
RUNNING, ///< the job is running
@@ -80,10 +84,11 @@ protected:
void set_state (State);
void set_error (std::string e);
+ /** FilmState for this job */
boost::shared_ptr<const FilmState> _fs;
+ /** options in use for this job */
boost::shared_ptr<const Options> _opt;
-
- /** A log that this job can write to */
+ /** a log that this job can write to */
Log* _log;
private:
@@ -92,11 +97,15 @@ private:
/** mutex for _state and _error */
mutable boost::mutex _state_mutex;
+ /** current state of the job */
State _state;
+ /** message for an error that has occurred (when state == FINISHED_ERROR) */
std::string _error;
+ /** time that this job was started */
time_t _start_time;
-
+
+ /** mutex for _stack and _progress_unknown */
mutable boost::mutex _progress_mutex;
struct Level {