Index: src/libchcore/TOverlappedWriterFB.cpp =================================================================== diff -u -N -ra0de3c317cb73a42ed4efbdf29b3a87243b03df4 -rc0d9a798f9fbbeda239b84721ed864f9727e1ddc --- src/libchcore/TOverlappedWriterFB.cpp (.../TOverlappedWriterFB.cpp) (revision a0de3c317cb73a42ed4efbdf29b3a87243b03df4) +++ src/libchcore/TOverlappedWriterFB.cpp (.../TOverlappedWriterFB.cpp) (revision c0d9a798f9fbbeda239b84721ed864f9727e1ddc) @@ -50,7 +50,7 @@ { } - TSubTaskBase::ESubOperationResult TOverlappedWriterFB::OnWritePossible(bool& bStopProcessing, bool& bProcessedFlag) + TSubTaskBase::ESubOperationResult TOverlappedWriterFB::OnWritePossible() { TOverlappedDataBuffer* pBuffer = m_spWriter->GetWriteBuffer(); if(!pBuffer) @@ -62,27 +62,14 @@ return TSubTaskBase::eSubResult_Continue; } - bool bSkip = false; - TSubTaskBase::ESubOperationResult eResult = m_spDstFile->WriteFileFB(*pBuffer, bSkip); + TSubTaskBase::ESubOperationResult eResult = m_spDstFile->WriteFileFB(*pBuffer); if(eResult != TSubTaskBase::eSubResult_Continue) - { m_spEmptyBuffers->Push(pBuffer); - bStopProcessing = true; - } - else if(bSkip) - { - m_spEmptyBuffers->Push(pBuffer); - m_spStats->AdjustProcessedSize(m_spStats->GetCurrentItemProcessedSize(), m_spSrcFileInfo->GetLength64()); - - bProcessedFlag = false; - bStopProcessing = true; - } - return eResult; } - TSubTaskBase::ESubOperationResult TOverlappedWriterFB::OnWriteFailed(bool& bStopProcessing, bool& bProcessedFlag) + TSubTaskBase::ESubOperationResult TOverlappedWriterFB::OnWriteFailed() { TOverlappedDataBuffer* pBuffer = m_spWriter->GetFailedWriteBuffer(); if(!pBuffer) @@ -94,32 +81,20 @@ return TSubTaskBase::eSubResult_Continue; } - bool bSkip = false; - TSubTaskBase::ESubOperationResult eResult = m_spDstFile->HandleWriteError(*pBuffer, bSkip); + TSubTaskBase::ESubOperationResult eResult = m_spDstFile->HandleWriteError(*pBuffer); if(eResult == TSubTaskBase::eSubResult_Retry) { m_spDstFile->Close(); m_spWriter->AddRetryBuffer(pBuffer); + eResult = TSubTaskBase::eSubResult_Continue; } else if(eResult != TSubTaskBase::eSubResult_Continue) - { m_spEmptyBuffers->Push(pBuffer); - bStopProcessing = true; - } - else if(bSkip) - { - m_spEmptyBuffers->Push(pBuffer); - m_spStats->AdjustProcessedSize(m_spStats->GetCurrentItemProcessedSize(), m_spSrcFileInfo->GetLength64()); - - bProcessedFlag = false; - bStopProcessing = true; - } - return eResult; } - TSubTaskBase::ESubOperationResult TOverlappedWriterFB::OnWriteFinished(bool& bStopProcessing, bool& bProcessedFlag) + TSubTaskBase::ESubOperationResult TOverlappedWriterFB::OnWriteFinished(bool& bStopProcessing) { TOverlappedDataBuffer* pBuffer = m_spWriter->GetFinishedBuffer(); if(!pBuffer) @@ -129,97 +104,63 @@ if(m_bReleaseMode) { - bool bSkip = false; - AdjustProcessedSize(fsWritten, bSkip); // ignore return value as we're already in release mode + AdjustProcessedSize(fsWritten); // ignore return value as we're already in release mode m_spEmptyBuffers->Push(pBuffer); - bProcessedFlag = pBuffer->IsLastPart() && (pBuffer->GetBytesTransferred() == fsWritten); return TSubTaskBase::eSubResult_Continue; } TSubTaskBase::ESubOperationResult eResult = TSubTaskBase::eSubResult_Continue; if(pBuffer->IsLastPart()) { - bool bSkip = false; - eResult = m_spDstFile->FinalizeFileFB(*pBuffer, bSkip); - if(eResult != TSubTaskBase::eSubResult_Continue) + eResult = m_spDstFile->FinalizeFileFB(*pBuffer); + if (eResult != TSubTaskBase::eSubResult_Continue) { m_spEmptyBuffers->Push(pBuffer); - bStopProcessing = true; return eResult; } - else if(bSkip) - { - m_spEmptyBuffers->Push(pBuffer); - - m_spStats->AdjustProcessedSize(m_spStats->GetCurrentItemProcessedSize(), m_spSrcFileInfo->GetLength64()); - - bProcessedFlag = false; - bStopProcessing = true; - return eResult; - } } // in case we read past the original eof, try to get new file size from filesystem - bool bSkip = false; - eResult = AdjustProcessedSize(fsWritten, bSkip); + eResult = AdjustProcessedSize(fsWritten); if(eResult != TSubTaskBase::eSubResult_Continue) { m_spEmptyBuffers->Push(pBuffer); - bStopProcessing = true; return eResult; } - else if(bSkip) - { - m_spEmptyBuffers->Push(pBuffer); - bProcessedFlag = false; - bStopProcessing = true; - return eResult; - } - // stop iterating through file bStopProcessing = pBuffer->IsLastPart(); if(bStopProcessing) { m_spWriter->MarkAsFinalized(pBuffer); // this is the end of copying of src file - in case it is smaller than expected fix the stats so that difference is accounted for - eResult = AdjustFinalSize(bSkip); + eResult = AdjustFinalSize(); if(eResult != TSubTaskBase::eSubResult_Continue) { m_spEmptyBuffers->Push(pBuffer); - bStopProcessing = true; return eResult; } - else if(bSkip) - { - m_spEmptyBuffers->Push(pBuffer); - bProcessedFlag = false; - bStopProcessing = true; - return eResult; - } - - bProcessedFlag = true; m_spStats->ResetCurrentItemProcessedSize(); } m_spEmptyBuffers->Push(pBuffer); return eResult; } - TSubTaskBase::ESubOperationResult TOverlappedWriterFB::AdjustProcessedSize(file_size_t fsWritten, bool& bSkip) + TSubTaskBase::ESubOperationResult TOverlappedWriterFB::AdjustProcessedSize(file_size_t fsWritten) { TSubTaskBase::ESubOperationResult eResult = TSubTaskBase::eSubResult_Continue; // in case we read past the original eof, try to get new file size from filesystem if(m_spStats->WillAdjustProcessedSizeExceedTotalSize(0, fsWritten)) { file_size_t fsNewSize = 0; - eResult = m_spSrcFile->GetFileSize(fsNewSize, bSkip); - if(eResult != TSubTaskBase::eSubResult_Continue || bSkip) + eResult = m_spSrcFile->GetFileSize(fsNewSize); + if(eResult != TSubTaskBase::eSubResult_Continue) return eResult; if(fsNewSize == m_spSrcFileInfo->GetLength64()) @@ -234,7 +175,7 @@ return eResult; } - TSubTaskBase::ESubOperationResult TOverlappedWriterFB::AdjustFinalSize(bool& bSkip) + TSubTaskBase::ESubOperationResult TOverlappedWriterFB::AdjustFinalSize() { TSubTaskBase::ESubOperationResult eResult = TSubTaskBase::eSubResult_Continue; @@ -243,8 +184,8 @@ if(ullCIProcessedSize < ullCITotalSize) { file_size_t fsNewSize = 0; - eResult = m_spSrcFile->GetFileSize(fsNewSize, bSkip); - if(eResult != TSubTaskBase::eSubResult_Continue || bSkip) + eResult = m_spSrcFile->GetFileSize(fsNewSize); + if(eResult != TSubTaskBase::eSubResult_Continue) return eResult; if(fsNewSize == m_spSrcFileInfo->GetLength64())