/* * See the files COPYING and README for copyright information and how to reach * the author. * * $Id: manager.h,v 1.9 2006/09/16 18:33:36 lordjaxom Exp $ */ #ifndef VDR_BURN_MANAGER_H #define VDR_BURN_MANAGER_H #include "jobs.h" #include "proctools/startable.h" #include #include namespace vdr_burn { class manager: public cThread, public proctools::startable { public: class lock { public: lock(); ~lock(); private: cMutex* m_mutex; }; manager(); virtual ~manager(); static bool get_is_busy(); // the following methods may only be called and their results only be // used while manager is locked static void start_pending(); static void replace_pending(job* job_); static void erase_job(job* job_); static std::string get_status_message(); static job& get_pending() { return *m_instance->m_pending; } static job* get_active() { return m_instance->m_active; } static const job_queue& get_queued(); static const job_queue& get_erroneous(); static const job_queue& get_canceled(); static bool is_recording_queued( const std::string& filename ); protected: virtual void Action(); void start_if_idle(); void check_rotate(); private: cMutex m_mutex; cCondVar m_condition; std::auto_ptr m_pending; job* m_active; job_queue m_queued; job_queue m_erroneous; job_queue m_canceled; }; inline const job_queue& manager::get_queued() { return m_instance->m_queued; } inline const job_queue& manager::get_erroneous() { return m_instance->m_erroneous; } inline const job_queue& manager::get_canceled() { return m_instance->m_canceled; } } #endif // VDR_BURN_MANAGER_H