Index: src/libchcore/TTask.h =================================================================== diff -u -ra27d1acf1bda3c25b6dcce0d0eb0278009ce63ae -rde48778626a2e3f6a09a43f0211b2a04eba36fed --- src/libchcore/TTask.h (.../TTask.h) (revision a27d1acf1bda3c25b6dcce0d0eb0278009ce63ae) +++ src/libchcore/TTask.h (.../TTask.h) (revision de48778626a2e3f6a09a43f0211b2a04eba36fed) @@ -27,27 +27,29 @@ #include "TBasePathData.h" #include "TSubTaskBase.h" #include "TTaskLocalStats.h" -#include "TLocalFilesystem.h" #include "TSubTaskArray.h" #include "TSubTaskContext.h" #include "TTaskStatsSnapshot.h" #include "ISerializer.h" #include "TTaskBaseData.h" -#include "TEvent.h" #include -#include "log.h" +#include "IFilesystem.h" +#include "..\liblogger\TLogger.h" namespace chcore { class TBufferSizes; /////////////////////////////////////////////////////////////////////////// // TTask + class TTask; + using TTaskPtr = std::shared_ptr; class LIBCHCORE_API TTask { private: - TTask(const ISerializerPtr& spSerializer, const IFeedbackHandlerPtr& spFeedbackHandler); + TTask(const ISerializerPtr& spSerializer, const IFeedbackHandlerPtr& spFeedbackHandler, const TTaskBaseData& rBaseTaskData, const logger::TMultiLoggerConfigPtr& spLoggerConfig); + TTask(const ISerializerPtr& spSerializer, const IFeedbackHandlerPtr& spFeedbackHandler, const TTaskDefinition& rTaskDefinition, const TSmartPath& rLogPath, const logger::TMultiLoggerConfigPtr& spLoggerConfig); public: ~TTask(); @@ -62,12 +64,13 @@ void GetBufferSizes(TBufferSizes& bsSizes); TSmartPath GetLogPath() const; + void GetLogPaths(logger::TLoggerPaths& rLogPaths) const; TString GetTaskName() const; // thread void SetPriority(int nPriority); - void Load(); + static TTaskPtr Load(const ISerializerPtr& spSerializer, const IFeedbackHandlerPtr& spFeedbackHandler, const logger::TMultiLoggerConfigPtr& spLoggerConfig); void Store(bool bForce); void BeginProcessing(); @@ -86,10 +89,11 @@ void RestoreFeedbackDefaults(); private: + void Load(const TTaskBaseData& rBaseData); + void SetTaskDefinition(const TTaskDefinition& rTaskDefinition); void SetLogPath(const TSmartPath& pathLog); - chcore::log_file& GetLog(); // methods are called when task is being added or removed from the global task array /// Method is called when this task is being added to a TTaskManager object @@ -110,10 +114,6 @@ TSubTaskBase::ESubOperationResult CheckForWaitState(); - // m_nStatus - void SetStatusNL(UINT nStatus, UINT nMask); - UINT GetStatusNL(UINT nMask = 0xffffffff); - void SetForceFlagNL(bool bFlag = true); bool GetForceFlagNL(); @@ -143,9 +143,9 @@ // base data TTaskBaseData m_tBaseData; - // basic information #pragma warning(push) #pragma warning(disable: 4251) + logger::TLoggerPtr m_spLog; ///< Log file where task information will be stored TBasePathDataContainerPtr m_spSrcPaths; #pragma warning(pop) @@ -166,27 +166,23 @@ bool m_bForce; // if the continuation of tasks should be independent of max concurrently running task limit bool m_bContinue; // allows task to continue - // other helpers - chcore::log_file m_log; ///< Log file where task information will be stored - - // Local filesystem access - TLocalFilesystem m_fsLocal; - /// Thread controlling object TWorkerThreadController m_workerThread; /// Mutex for locking concurrent access to members of this class #pragma warning(push) #pragma warning(disable: 4251) - TTaskLocalStatsInfo m_tLocalStats; // local statistics + // Local filesystem access + IFilesystemPtr m_fsLocal; + // local statistics + TTaskLocalStatsInfo m_tLocalStats; + mutable boost::shared_mutex m_lock; #pragma warning(pop) friend class TTaskManager; }; - - typedef boost::shared_ptr TTaskPtr; } #endif