Index: src/libchcore/TTaskManagerStatsSnapshot.h =================================================================== diff -u -N -r12a1725bfd04b0f55fd0fda302975fdcd4174943 -ra5f396da5ed5ffb3fcd9fdf22afb5a7fd07e1ab8 --- src/libchcore/TTaskManagerStatsSnapshot.h (.../TTaskManagerStatsSnapshot.h) (revision 12a1725bfd04b0f55fd0fda302975fdcd4174943) +++ src/libchcore/TTaskManagerStatsSnapshot.h (.../TTaskManagerStatsSnapshot.h) (revision a5f396da5ed5ffb3fcd9fdf22afb5a7fd07e1ab8) @@ -24,6 +24,7 @@ #define __TTASKMANAGERSTATSSNAPSHOT_H__ #include "libchcore.h" +#include "TTaskStatsSnapshot.h" BEGIN_CHCORE_NAMESPACE @@ -37,36 +38,55 @@ void Clear(); - size_t GetProcessedCount() const { return m_stProcessedCount; } - void SetProcessedCount(size_t stCount) { m_stProcessedCount = stCount; } + void AddTaskStats(const TTaskStatsSnapshotPtr& spStats); + size_t GetTaskStatsCount() const; + TTaskStatsSnapshotPtr GetTaskStatsAt(size_t stIndex) const; + TTaskStatsSnapshotPtr GetTaskStatsForSessionUniqueID(size_t stSessionUniqueID) const; - size_t GetTotalCount() const { return m_stTotalCount; } - void SetTotalCount(size_t stTotalCount) { m_stTotalCount = stTotalCount; } + size_t GetRunningTasks() const { return m_stRunningTasks; } + void SetRunningTasks(size_t stRunningTasks) { m_stRunningTasks = stRunningTasks; } - unsigned long long GetProcessedSize() const { return m_ullProcessedSize; } - void SetProcessedSize(unsigned long long ullProcessedSize) { m_ullProcessedSize = ullProcessedSize; } + unsigned long long GetProcessedCount() const; + unsigned long long GetTotalCount() const; + unsigned long long GetProcessedSize() const; + unsigned long long GetTotalSize() const; - unsigned long long GetTotalSize() const { return m_ullTotalSize; } - void SetTotalSize(unsigned long long ullTotalSize) { m_ullTotalSize = ullTotalSize; } + double GetCountSpeed() const; + double GetAvgCountSpeed() const; + double GetSizeSpeed() const; + double GetAvgSizeSpeed() const; - double GetGlobalProgressInPercent() const { return m_dGlobalProgressInPercent; } - void SetGlobalProgressInPercent(double dPercent) { m_dGlobalProgressInPercent = dPercent; } + double GetCombinedProgress() const; - size_t GetRunningTasks() const { return m_stRunningTasks; } - void SetRunningTasks(size_t stRunningTasks) { m_stRunningTasks = stRunningTasks; } +private: + void CalculateProgressAndSpeeds() const; private: - size_t m_stProcessedCount; - size_t m_stTotalCount; + size_t m_stRunningTasks; - unsigned long long m_ullProcessedSize; - unsigned long long m_ullTotalSize; +#pragma warning(push) +#pragma warning(disable: 4251) + std::vector m_vTasksSnapshots; +#pragma warning(pop) - double m_dGlobalProgressInPercent; + // cache for items calculated on-demand + mutable bool m_bCacheFilled; + mutable unsigned long long m_ullProcessedCount; + mutable unsigned long long m_ullTotalCount; + mutable unsigned long long m_ullProcessedSize; + mutable unsigned long long m_ullTotalSize; - size_t m_stRunningTasks; + mutable double m_dCountSpeed; + mutable double m_dSizeSpeed; + + mutable double m_dAvgCountSpeed; + mutable double m_dAvgSizeSpeed; + + mutable double m_dCombinedProgress; }; +typedef boost::shared_ptr TTaskManagerStatsSnapshotPtr; + END_CHCORE_NAMESPACE #endif