Index: src/libchcore/TSubTaskScanDirectory.cpp =================================================================== diff -u -N -r20aff533ab239b5b41263bb342879b4ea46fdbf6 -r12a1725bfd04b0f55fd0fda302975fdcd4174943 --- src/libchcore/TSubTaskScanDirectory.cpp (.../TSubTaskScanDirectory.cpp) (revision 20aff533ab239b5b41263bb342879b4ea46fdbf6) +++ src/libchcore/TSubTaskScanDirectory.cpp (.../TSubTaskScanDirectory.cpp) (revision 12a1725bfd04b0f55fd0fda302975fdcd4174943) @@ -36,6 +36,7 @@ #include "TFileInfo.h" #include "SerializationHelpers.h" #include "TBinarySerializer.h" +#include "DataBuffer.h" BEGIN_CHCORE_NAMESPACE @@ -101,6 +102,12 @@ { } +void TSubTaskScanDirectories::Reset() +{ + m_tProgressInfo.ResetProgress(); + m_tSubTaskStats.Clear(); +} + TSubTaskScanDirectories::ESubOperationResult TSubTaskScanDirectories::Exec() { TSubTaskProcessingGuard guard(m_tSubTaskStats); @@ -111,23 +118,15 @@ TTaskDefinition& rTaskDefinition = GetContext().GetTaskDefinition(); IFeedbackHandler* piFeedbackHandler = GetContext().GetFeedbackHandler(); TWorkerThreadController& rThreadController = GetContext().GetThreadController(); - TTaskLocalStats& rTaskLocalStats = GetContext().GetTaskLocalStats(); TBasePathDataContainer& rBasePathDataContainer = GetContext().GetBasePathDataContainer(); rLog.logi(_T("Searching for files...")); // reset progress rFilesCache.SetComplete(false); - // old stats - rTaskLocalStats.SetProcessedSize(0); - rTaskLocalStats.SetTotalSize(0); - rTaskLocalStats.SetCurrentIndex(0); - rTaskLocalStats.SetTotalItems(rTaskDefinition.GetSourcePathCount()); - rTaskLocalStats.SetCurrentPath(TString()); - // new stats - m_tSubTaskStats.SetCurrentBufferIndex(-1); + m_tSubTaskStats.SetCurrentBufferIndex(TBufferSizes::eBuffer_Default); m_tSubTaskStats.SetTotalCount(rTaskDefinition.GetSourcePathCount()); m_tSubTaskStats.SetProcessedCount(0); m_tSubTaskStats.SetTotalSize(0); @@ -158,10 +157,6 @@ m_tProgressInfo.SetCurrentIndex(stIndex); - // old stats - rTaskLocalStats.SetCurrentIndex(stIndex); - rTaskLocalStats.SetCurrentPath(pathCurrent.ToString()); - // new stats m_tSubTaskStats.SetProcessedCount(stIndex); m_tSubTaskStats.SetCurrentPath(pathCurrent.ToString()); @@ -272,10 +267,6 @@ // calc size of all files m_tProgressInfo.SetCurrentIndex(stIndex); - // old stats - rTaskLocalStats.SetCurrentIndex(stIndex); - rTaskLocalStats.SetCurrentPath(TString()); - // new stats m_tSubTaskStats.SetProcessedCount(stIndex); m_tSubTaskStats.SetCurrentPath(TString()); @@ -288,6 +279,11 @@ return eSubResult_Continue; } +void TSubTaskScanDirectories::GetStatsSnapshot(TSubTaskStatsSnapshot& rStats) const +{ + m_tSubTaskStats.GetSnapshot(rStats); +} + int TSubTaskScanDirectories::ScanDirectory(TSmartPath pathDirName, size_t stSrcIndex, bool bRecurse, bool bIncludeDirs, TFileFiltersArray& afFilters) { TFileInfoArray& rFilesCache = GetContext().GetFilesCache();