Index: src/libchengine/TSubTaskStatsInfo.cpp =================================================================== diff -u -N -r0d5b67ee96b435d63f7bf075dc8e28603793b187 -r9fcf462ad4a28203a3d34ded6da7125d4dcc925c --- src/libchengine/TSubTaskStatsInfo.cpp (.../TSubTaskStatsInfo.cpp) (revision 0d5b67ee96b435d63f7bf075dc8e28603793b187) +++ src/libchengine/TSubTaskStatsInfo.cpp (.../TSubTaskStatsInfo.cpp) (revision 9fcf462ad4a28203a3d34ded6da7125d4dcc925c) @@ -28,6 +28,7 @@ #include "../libchcore/ErrorCodes.h" #include #include "../libserializer/ISerializerRowData.h" +#include "../libchcore/MathFunctions.h" using namespace chcore; using namespace string; @@ -38,7 +39,7 @@ /////////////////////////////////////////////////////////////////////////////////// // class TSubTaskStatsInfo - TSubTaskStatsInfo::TSubTaskStatsInfo(ESubOperationType eSubTaskType) : + TSubTaskStatsInfo::TSubTaskStatsInfo(ESubOperationType eSubTaskType, bool bIgnoreSizeSpeed) : m_bSubTaskIsRunning(m_setModifications, false), m_ullTotalSize(m_setModifications, 0), m_ullProcessedSize(m_setModifications, 0), @@ -54,7 +55,8 @@ m_iCurrentBufferIndex(m_setModifications, 0), m_strCurrentPath(m_setModifications), m_bIsInitialized(m_setModifications, false), - m_eSubOperationType(eSubTaskType) + m_eSubOperationType(eSubTaskType), + m_bIgnoreSizeSpeed(bIgnoreSizeSpeed) { m_setModifications[eMod_Added] = true; } @@ -89,16 +91,26 @@ if (m_bSubTaskIsRunning) UpdateTime(lock); + auto totalTime = m_tTimer.Get().GetTotalTime(); + spStatsSnapshot->SetRunning(m_bSubTaskIsRunning); spStatsSnapshot->SetProcessedCount(m_fcProcessedCount); spStatsSnapshot->SetTotalCount(m_fcTotalCount); spStatsSnapshot->SetProcessedSize(m_ullProcessedSize); spStatsSnapshot->SetTotalSize(m_ullTotalSize); spStatsSnapshot->SetCurrentBufferIndex(m_iCurrentBufferIndex); spStatsSnapshot->SetCurrentPath(m_strCurrentPath); - spStatsSnapshot->SetTimeElapsed(m_tTimer.Get().GetTotalTime()); + spStatsSnapshot->SetTimeElapsed(totalTime); + spStatsSnapshot->SetSizeSpeed(m_tSizeSpeed.Get().GetSpeed()); + if(!m_bIgnoreSizeSpeed) + spStatsSnapshot->SetAvgSizeSpeed(totalTime != 0 ? Math::Div64(m_ullProcessedSize, totalTime / 1000.0) : 0.0); + else + spStatsSnapshot->SetAvgSizeSpeed(0.0); + spStatsSnapshot->SetCountSpeed(m_tCountSpeed.Get().GetSpeed()); + spStatsSnapshot->SetAvgCountSpeed(totalTime != 0 ? Math::Div64(m_fcProcessedCount, totalTime / 1000.0) : 0.0); + spStatsSnapshot->SetCurrentItemProcessedSize(m_ullCurrentItemProcessedSize); spStatsSnapshot->SetCurrentItemTotalSize(m_ullCurrentItemTotalSize); spStatsSnapshot->SetSubOperationType(m_eSubOperationType); @@ -163,7 +175,8 @@ boost::unique_lock lock(m_lock); m_ullProcessedSize.Modify() += ullIncreaseBy; - m_tSizeSpeed.Modify().AddSample(ullIncreaseBy, m_tTimer.Modify().Tick()); + if(!m_bIgnoreSizeSpeed) + m_tSizeSpeed.Modify().AddSample(ullIncreaseBy, m_tTimer.Modify().Tick()); _ASSERTE(m_ullProcessedSize <= m_ullTotalSize); if (m_ullProcessedSize > m_ullTotalSize) @@ -176,7 +189,8 @@ m_ullProcessedSize.Modify() -= ullDecreaseBy; // we didn't process anything here - hence the 0-sized sample - m_tSizeSpeed.Modify().AddSample(0, m_tTimer.Modify().Tick()); + if(!m_bIgnoreSizeSpeed) + m_tSizeSpeed.Modify().AddSample(0, m_tTimer.Modify().Tick()); _ASSERTE(m_ullProcessedSize <= m_ullTotalSize); if (m_ullProcessedSize > m_ullTotalSize) @@ -187,7 +201,8 @@ { boost::unique_lock lock(m_lock); - m_tSizeSpeed.Modify().AddSample(ullProcessedSize > m_ullProcessedSize ? ullProcessedSize - m_ullProcessedSize : 0, m_tTimer.Modify().Tick()); + if(!m_bIgnoreSizeSpeed) + m_tSizeSpeed.Modify().AddSample(ullProcessedSize > m_ullProcessedSize ? ullProcessedSize - m_ullProcessedSize : 0, m_tTimer.Modify().Tick()); m_ullProcessedSize = ullProcessedSize; _ASSERTE(m_ullProcessedSize <= m_ullTotalSize); @@ -252,7 +267,8 @@ m_ullCurrentItemProcessedSize.Modify() += fsDiff; m_ullProcessedSize.Modify() += fsDiff; - m_tSizeSpeed.Modify().AddSample(fsDiff, m_tTimer.Modify().Tick()); + if(!m_bIgnoreSizeSpeed) + m_tSizeSpeed.Modify().AddSample(fsDiff, m_tTimer.Modify().Tick()); } else { @@ -261,7 +277,8 @@ m_ullCurrentItemProcessedSize.Modify() -= fsDiff; m_ullProcessedSize.Modify() -= fsDiff; - m_tSizeSpeed.Modify().AddSample(0, m_tTimer.Modify().Tick()); + if(!m_bIgnoreSizeSpeed) + m_tSizeSpeed.Modify().AddSample(0, m_tTimer.Modify().Tick()); } VerifyProcessedVsTotal(); @@ -319,7 +336,8 @@ if (m_tTimer.Get().IsRunning()) { m_tTimer.Modify().Tick(); - m_tSizeSpeed.Modify().AddSample(0, m_tTimer.Get().GetLastTimestamp()); + if(!m_bIgnoreSizeSpeed) + m_tSizeSpeed.Modify().AddSample(0, m_tTimer.Get().GetLastTimestamp()); m_tCountSpeed.Modify().AddSample(0, m_tTimer.Get().GetLastTimestamp()); } }