Index: src/libchcore/TTask.h =================================================================== diff -u -N -rbebda797ec6983535a8940f8f9f15453fe6b1785 -r12a1725bfd04b0f55fd0fda302975fdcd4174943 --- src/libchcore/TTask.h (.../TTask.h) (revision bebda797ec6983535a8940f8f9f15453fe6b1785) +++ src/libchcore/TTask.h (.../TTask.h) (revision 12a1725bfd04b0f55fd0fda302975fdcd4174943) @@ -74,7 +74,7 @@ ull_t m_ullProcessedSize; ull_t m_ullSizeAll; - int m_nPercent; + double m_dPercent; time_t m_timeElapsed; @@ -90,7 +90,7 @@ ETaskCurrentState m_eTaskState; - int m_nPercent; + double m_dPercent; }; /////////////////////////////////////////////////////////////////////////// @@ -118,7 +118,6 @@ // m_nBufferSize void SetBufferSizes(const TBufferSizes& bsSizes); void GetBufferSizes(TBufferSizes& bsSizes); - int GetCurrentBufferIndex(); // thread void SetPriority(int nPriority); @@ -150,14 +149,17 @@ TSmartPath GetRelatedPath(EPathType ePathType); + // Stats handling + void GetTaskStats(TTaskStatsSnapshot& rSnapshot) const; + protected: TTask(IFeedbackHandler* piFeedbackHandler, size_t stSessionUniqueID); void SetTaskDefinition(const TTaskDefinition& rTaskDefinition); // 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 - void OnRegisterTask(TTasksGlobalStats& rtGlobalStats); + void OnRegisterTask(); /// Method is called when task is being removed from the TTaskManager object void OnUnregisterTask(); @@ -166,8 +168,6 @@ /// Method is called when processing is being ended void OnEndOperation(); - // Processing operations - /// Thread function that delegates call to the TTask::ThrdProc static DWORD WINAPI DelegateThreadProc(LPVOID pParam); @@ -217,9 +217,6 @@ // changing fast volatile ETaskCurrentState m_eCurrentState; // current state of processing this task represents - // task control variables (per-session state) - TTaskLocalStats m_localStats; // local statistics - // task settings TFileFiltersArray m_afFilters; // filtering settings for files (will be filtered according to the rules inside when searching for files) @@ -246,6 +243,8 @@ /// Mutex for locking concurrent access to members of this class #pragma warning(push) #pragma warning(disable: 4251) + TTaskLocalStatsInfo m_tLocalStats; // local statistics + mutable boost::shared_mutex m_lock; #pragma warning(pop)