Index: src/libchcore/TSubTaskStatsInfo.h =================================================================== diff -u -N -r12a1725bfd04b0f55fd0fda302975fdcd4174943 -r9b8cccbee0fcfeca28a112cc0253a7641f73f74f --- src/libchcore/TSubTaskStatsInfo.h (.../TSubTaskStatsInfo.h) (revision 12a1725bfd04b0f55fd0fda302975fdcd4174943) +++ src/libchcore/TSubTaskStatsInfo.h (.../TSubTaskStatsInfo.h) (revision 9b8cccbee0fcfeca28a112cc0253a7641f73f74f) @@ -25,6 +25,8 @@ #include "libchcore.h" #include "TString.h" +#include "TSimpleTimer.h" +#include "TSpeedTracker.h" BEGIN_CHCORE_NAMESPACE @@ -48,6 +50,10 @@ class TSubTaskStatsInfo { +private: + static const unsigned long long DefaultSpeedTrackTime = 1000; // in miliseconds + static const unsigned long long DefaultSpeedSampleTime = 100; // in miliseconds + public: TSubTaskStatsInfo(); @@ -66,15 +72,18 @@ void SetTotalSize(unsigned long long ullTotalSize); + // current item + void IncreaseCurrentItemProcessedSize(unsigned long long ullIncreaseBy); + void SetCurrentItemProcessedSize(unsigned long long ullProcessedSize); + + void SetCurrentItemTotalSize(unsigned long long ullTotalSize); + // buffer index void SetCurrentBufferIndex(int iCurrentIndex); // current path void SetCurrentPath(const TString& strPath); - // time - void SetTimeElapsed(time_t timeElapsed); - private: TSubTaskStatsInfo(const TSubTaskStatsInfo&); TSubTaskStatsInfo& operator=(const TSubTaskStatsInfo&); @@ -88,25 +97,26 @@ void DisableTimeTracking(); void UpdateTime(boost::upgrade_lock& lock) const; - // calculates progress in percent - double CalculateProgressInPercent(boost::upgrade_lock& lock) const; - private: bool m_bSubTaskIsRunning; unsigned long long m_ullTotalSize; unsigned long long m_ullProcessedSize; + mutable TSpeedTracker m_tSizeSpeed; size_t m_stTotalCount; size_t m_stProcessedCount; + mutable TSpeedTracker m_tCountSpeed; + unsigned long long m_ullCurrentItemProcessedSize; + unsigned long long m_ullCurrentItemTotalSize; + + mutable TSimpleTimer m_tTimer; + int m_iCurrentBufferIndex; TString m_strCurrentPath; // currently processed path - mutable time_t m_timeElapsed; - mutable time_t m_timeLast; - #pragma warning(push) #pragma warning(disable: 4251) mutable boost::shared_mutex m_lock;