Merge branch 'master' of /home/carl/git/dvdomatic
[dcpomatic.git] / src / lib / job.h
index 2a77f78f7775e43009e5642fddb5710fcaf1c934..b391304792e0a3e9ab0a926ae440b3dfcf806e8d 100644 (file)
@@ -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 {