Index: src/libchcore/TSubTaskCopyMove.cpp =================================================================== diff -u -N -r20aff533ab239b5b41263bb342879b4ea46fdbf6 -r12a1725bfd04b0f55fd0fda302975fdcd4174943 --- src/libchcore/TSubTaskCopyMove.cpp (.../TSubTaskCopyMove.cpp) (revision 20aff533ab239b5b41263bb342879b4ea46fdbf6) +++ src/libchcore/TSubTaskCopyMove.cpp (.../TSubTaskCopyMove.cpp) (revision 12a1725bfd04b0f55fd0fda302975fdcd4174943) @@ -149,6 +149,12 @@ { } +void TSubTaskCopyMove::Reset() +{ + m_tProgressInfo.ResetProgress(); + m_tSubTaskStats.Clear(); +} + TSubTaskBase::ESubOperationResult TSubTaskCopyMove::Exec() { TSubTaskProcessingGuard guard(m_tSubTaskStats); @@ -159,7 +165,6 @@ TTaskConfigTracker& rCfgTracker = GetContext().GetCfgTracker(); TWorkerThreadController& rThreadController = GetContext().GetThreadController(); IFeedbackHandler* piFeedbackHandler = GetContext().GetFeedbackHandler(); - TTaskLocalStats& rLocalStats = GetContext().GetTaskLocalStats(); BOOST_ASSERT(piFeedbackHandler != NULL); if(piFeedbackHandler == NULL) @@ -168,15 +173,8 @@ // log rLog.logi(_T("Processing files/folders (ProcessFiles)")); - // old stats - rLocalStats.SetProcessedSize(rFilesCache.CalculatePartialSize(m_tProgressInfo.GetCurrentIndex())); - rLocalStats.SetTotalSize(rFilesCache.CalculateTotalSize()); - rLocalStats.SetCurrentIndex(m_tProgressInfo.GetCurrentIndex()); - rLocalStats.SetTotalItems(rFilesCache.GetSize()); - rLocalStats.SetCurrentPath(TString()); - // new stats - m_tSubTaskStats.SetCurrentBufferIndex(-1); + m_tSubTaskStats.SetCurrentBufferIndex(TBufferSizes::eBuffer_Default); m_tSubTaskStats.SetTotalCount(rFilesCache.GetSize()); m_tSubTaskStats.SetProcessedCount(rFilesCache.GetSize()); m_tSubTaskStats.SetTotalSize(rFilesCache.CalculateTotalSize()); @@ -249,10 +247,6 @@ TFileInfoPtr spFileInfo = rFilesCache.GetAt(stIndex); TSmartPath pathCurrent = spFileInfo->GetFullFilePath(); - // old stats - rLocalStats.SetCurrentIndex(stIndex); - rLocalStats.SetCurrentPath(pathCurrent.ToString()); - // new stats m_tSubTaskStats.SetProcessedCount(stIndex); m_tSubTaskStats.SetCurrentPath(pathCurrent.ToString()); @@ -297,8 +291,6 @@ } } - // old stats - rLocalStats.IncreaseProcessedSize(spFileInfo->GetLength64()); // new stats m_tSubTaskStats.IncreaseProcessedSize(spFileInfo->GetLength64()); @@ -338,10 +330,6 @@ m_tProgressInfo.SetCurrentIndex(stIndex); - // old stats - rLocalStats.SetCurrentIndex(stIndex); - rLocalStats.SetCurrentPath(TString()); - // new stats m_tSubTaskStats.SetProcessedCount(stIndex); m_tSubTaskStats.SetCurrentPath(TString()); @@ -355,6 +343,11 @@ return TSubTaskBase::eSubResult_Continue; } +void TSubTaskCopyMove::GetStatsSnapshot(TSubTaskStatsSnapshot& rStats) const +{ + m_tSubTaskStats.GetSnapshot(rStats); +} + int TSubTaskCopyMove::GetBufferIndex(const TFileInfoPtr& spFileInfo) { if(!spFileInfo) @@ -388,7 +381,6 @@ { TTaskDefinition& rTaskDefinition = GetContext().GetTaskDefinition(); TWorkerThreadController& rThreadController = GetContext().GetThreadController(); - TTaskLocalStats& rLocalStats = GetContext().GetTaskLocalStats(); icpf::log_file& rLog = GetContext().GetLog(); TTaskConfigTracker& rCfgTracker = GetContext().GetCfgTracker(); @@ -413,8 +405,6 @@ else if(!fileSrc.IsOpen()) { // invalid handle = operation skipped by user - // old stats - rLocalStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); // new stats m_tSubTaskStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); @@ -441,8 +431,6 @@ return eResult; else if(!fileDst.IsOpen()) { - // old stats - rLocalStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); // new stats m_tSubTaskStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); @@ -458,8 +446,6 @@ return eResult; else if(!fileDst.IsOpen()) { - // old stats - rLocalStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); // new stats m_tSubTaskStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); @@ -484,8 +470,6 @@ else if(bSkip) { // old stats - rLocalStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); - // old stats m_tSubTaskStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); pData->bProcessed = false; @@ -498,8 +482,6 @@ else if(bSkip) { // with either first or second seek we got 'skip' answer... - // old stats - rLocalStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); // new stats m_tSubTaskStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); @@ -508,8 +490,6 @@ } m_tProgressInfo.IncreaseCurrentFileProcessedSize(ullMove); - // old stats - rLocalStats.IncreaseProcessedSize(ullMove); // new stats m_tSubTaskStats.IncreaseProcessedSize(ullMove); } @@ -586,8 +566,6 @@ iBufferIndex = TBufferSizes::eBuffer_Default; else iBufferIndex = GetBufferIndex(pData->spSrcFile); - // old stats - rLocalStats.SetCurrentBufferIndex(iBufferIndex); // new stats m_tSubTaskStats.SetCurrentBufferIndex(iBufferIndex); @@ -600,8 +578,6 @@ else if(bSkip) { // old stats - rLocalStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); - // old stats m_tSubTaskStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); pData->bProcessed = false; @@ -630,8 +606,6 @@ else if(bSkip) { // old stats - rLocalStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); - // old stats m_tSubTaskStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); pData->bProcessed = false; @@ -640,8 +614,6 @@ // increase count of processed data m_tProgressInfo.IncreaseCurrentFileProcessedSize(ulWritten); - // old stats - rLocalStats.IncreaseProcessedSize(ulWritten); // new stats m_tSubTaskStats.IncreaseProcessedSize(ulWritten); @@ -664,9 +636,7 @@ return eResult; else if(!fileDst.IsOpen()) { - // old stats - rLocalStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); - // old stats + // new stats m_tSubTaskStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); pData->bProcessed = false; @@ -680,8 +650,6 @@ else if(bSkip) { // with either first or second seek we got 'skip' answer... - // old stats - rLocalStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); // new stats m_tSubTaskStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); @@ -699,8 +667,6 @@ return eResult; else if(bSkip) { - // old stats - rLocalStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); // new stats m_tSubTaskStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); @@ -711,8 +677,6 @@ // increase count of processed data m_tProgressInfo.IncreaseCurrentFileProcessedSize(ulRead); - // old stats - rLocalStats.IncreaseProcessedSize(ulRead); // new stats m_tSubTaskStats.IncreaseProcessedSize(ulRead); } @@ -723,8 +687,6 @@ else { // we don't copy contents, but need to increase processed size - // old stats - rLocalStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); // new stats m_tSubTaskStats.IncreaseProcessedSize(pData->spSrcFile->GetLength64() - m_tProgressInfo.GetCurrentFileProcessedSize()); }