Index: src/libchcore/TSubTaskStatsSnapshot.cpp =================================================================== diff -u -N -r12a1725bfd04b0f55fd0fda302975fdcd4174943 -r9b8cccbee0fcfeca28a112cc0253a7641f73f74f --- src/libchcore/TSubTaskStatsSnapshot.cpp (.../TSubTaskStatsSnapshot.cpp) (revision 12a1725bfd04b0f55fd0fda302975fdcd4174943) +++ src/libchcore/TSubTaskStatsSnapshot.cpp (.../TSubTaskStatsSnapshot.cpp) (revision 9b8cccbee0fcfeca28a112cc0253a7641f73f74f) @@ -23,6 +23,8 @@ #include "stdafx.h" #include "TSubTaskStatsSnapshot.h" #include "DataBuffer.h" +#include +#include "MathFunctions.h" BEGIN_CHCORE_NAMESPACE @@ -36,7 +38,11 @@ m_stProcessedCount(0), m_iCurrentBufferIndex(TBufferSizes::eBuffer_Default), m_strCurrentPath(0), - m_timeElapsed(0) + m_timeElapsed(0), + m_dSizeSpeed(0), + m_dCountSpeed(0), + m_ullCurrentItemProcessedSize(0), + m_ullCurrentItemTotalSize(0) { } @@ -48,9 +54,12 @@ m_stProcessedCount(rSrc.m_stProcessedCount), m_iCurrentBufferIndex(rSrc.m_iCurrentBufferIndex), m_strCurrentPath(rSrc.m_strCurrentPath), - m_timeElapsed(rSrc.m_timeElapsed) + m_timeElapsed(rSrc.m_timeElapsed), + m_dSizeSpeed(rSrc.m_dSizeSpeed), + m_dCountSpeed(rSrc.m_dCountSpeed), + m_ullCurrentItemProcessedSize(rSrc.m_ullCurrentItemProcessedSize), + m_ullCurrentItemTotalSize(rSrc.m_ullCurrentItemTotalSize) { - } TSubTaskStatsSnapshot& TSubTaskStatsSnapshot::operator=(const TSubTaskStatsSnapshot& rSrc) @@ -63,6 +72,10 @@ m_iCurrentBufferIndex = rSrc.m_iCurrentBufferIndex; m_strCurrentPath = rSrc.m_strCurrentPath; m_timeElapsed = rSrc.m_timeElapsed; + m_dSizeSpeed = rSrc.m_dSizeSpeed; + m_dCountSpeed = rSrc.m_dCountSpeed; + m_ullCurrentItemProcessedSize = rSrc.m_ullCurrentItemProcessedSize; + m_ullCurrentItemTotalSize = rSrc.m_ullCurrentItemTotalSize; return *this; } @@ -77,6 +90,53 @@ m_iCurrentBufferIndex = TBufferSizes::eBuffer_Default; m_strCurrentPath = 0; m_timeElapsed = 0; + m_dSizeSpeed = 0; + m_dCountSpeed = 0; + m_ullCurrentItemProcessedSize = 0; + m_ullCurrentItemTotalSize = 0; } +double TSubTaskStatsSnapshot::CalculateProgressInPercent() const +{ + if(m_ullTotalSize != 0) + return Math::Div64(m_ullProcessedSize, m_ullTotalSize); + else + return 0.0; +} + +unsigned long long TSubTaskStatsSnapshot::GetEstimatedTotalTime() const +{ + double dProgress = CalculateProgressInPercent(); + if(dProgress == 0.0) + return std::numeric_limits::max(); + else + return (unsigned long long)(m_timeElapsed * (1.0 / dProgress)); +} + +void TSubTaskStatsSnapshot::SetSizeSpeed(double dSizeSpeed) +{ + m_dSizeSpeed = dSizeSpeed; +} + +void TSubTaskStatsSnapshot::SetCountSpeed(double dCountSpeed) +{ + m_dCountSpeed = dCountSpeed; +} + +double TSubTaskStatsSnapshot::GetAvgSizeSpeed() const +{ + if(m_timeElapsed) + return Math::Div64(m_ullProcessedSize, m_timeElapsed / 1000); + else + return 0.0; +} + +double TSubTaskStatsSnapshot::GetAvgCountSpeed() const +{ + if(m_timeElapsed) + return Math::Div64(m_stProcessedCount, m_timeElapsed / 1000); + else + return 0.0; +} + END_CHCORE_NAMESPACE