Index: src/libchcore/TTaskManager.h =================================================================== diff -u -N -ra5f396da5ed5ffb3fcd9fdf22afb5a7fd07e1ab8 -rb1ecc12ba4c1f2a7b4acd6e82fc4193535e55ff0 --- src/libchcore/TTaskManager.h (.../TTaskManager.h) (revision a5f396da5ed5ffb3fcd9fdf22afb5a7fd07e1ab8) +++ src/libchcore/TTaskManager.h (.../TTaskManager.h) (revision b1ecc12ba4c1f2a7b4acd6e82fc4193535e55ff0) @@ -23,48 +23,46 @@ #include "FeedbackHandlerBase.h" #include "TPath.h" #include "TTaskManagerStatsSnapshot.h" +#include "TTaskInfo.h" +#include "ITaskManagerSerializer.h" BEGIN_CHCORE_NAMESPACE class TTaskDefinition; class TTask; typedef boost::shared_ptr TTaskPtr; -// special value representing no task -#define NO_TASK_SESSION_UNIQUE_ID 0 - /////////////////////////////////////////////////////////////////////////// // TTaskManager - class LIBCHCORE_API TTaskManager { public: - TTaskManager(); + TTaskManager(const ITaskManagerSerializerPtr& spSerializer); ~TTaskManager(); void Create(IFeedbackHandlerFactory* piFeedbackHandlerFactory); + void Store(); + void Load(); + TTaskPtr CreateTask(const TTaskDefinition& tTaskDefinition); + TTaskPtr ImportTask(const TSmartPath& strTaskPath); size_t GetSize() const; TTaskPtr GetAt(size_t stIndex) const; - TTaskPtr GetTaskBySessionUniqueID(size_t stSessionUniqueID) const; + TTaskPtr GetTaskByTaskID(taskid_t tTaskID) const; - size_t Add(const TTaskPtr& spNewTask); + void Add(const TTaskPtr& spNewTask); - void RemoveAt(size_t stIndex, size_t stCount = 1); - void RemoveAll(); + void ClearBeforeExit(); void RemoveAllFinished(); void RemoveFinished(const TTaskPtr& spSelTask); void ResumeWaitingTasks(size_t stMaxRunningTasks); void StopAllTasks(); - void SaveData(); - void LoadDataProgress(); - void TasksBeginProcessing(); void TasksPauseProcessing(); void TasksResumeProcessing(); @@ -74,32 +72,38 @@ bool AreAllFinished(); - void SetTasksDir(const TSmartPath& pathDir); - void GetStatsSnapshot(TTaskManagerStatsSnapshotPtr& spSnapshot) const; size_t GetCountOfRunningTasks() const; protected: void StopAllTasksNL(); - TTaskPtr CreateEmptyTask(); + IFeedbackHandler* CreateNewFeedbackHandler(); -public: - TSmartPath m_pathTasksDir; + TSmartPath CreateTaskLogPath(const TString& strUuid) const; + TSmartPath CreateTaskSerializePath(const TString& strUuid) const; + static TString GetUuid(); private: #pragma warning(push) #pragma warning(disable: 4251) mutable boost::shared_mutex m_lock; - std::vector m_vTasks; // vector with tasks objects #pragma warning(pop) - size_t m_stNextSessionUniqueID; // global counter for providing unique ids for tasks per session (launch of the program) + TTaskInfoContainer m_tTasks; // serializable -protected: + TSmartPath m_pathLogDir; // config-based, not serializable + taskid_t m_stNextTaskID; // serializable + IFeedbackHandlerFactory* m_piFeedbackFactory; +#pragma warning(push) +#pragma warning(disable: 4251) + ITaskManagerSerializerPtr m_spSerializer; +#pragma warning(pop) }; +typedef boost::shared_ptr TTaskManagerPtr; + END_CHCORE_NAMESPACE #endif