Index: src/libchcore/TOverlappedWriterFB.h =================================================================== diff -u -N -r8aa9ecb7ccb06d721b9717a4bb664651b0b8b10e -rf1d25f23712f5de7459f690ab51b2640d0f81b91 --- src/libchcore/TOverlappedWriterFB.h (.../TOverlappedWriterFB.h) (revision 8aa9ecb7ccb06d721b9717a4bb664651b0b8b10e) +++ src/libchcore/TOverlappedWriterFB.h (.../TOverlappedWriterFB.h) (revision f1d25f23712f5de7459f690ab51b2640d0f81b91) @@ -21,40 +21,50 @@ #include "TOverlappedWriter.h" #include "TFilesystemFileFeedbackWrapper.h" +#include "TOverlappedProcessorRange.h" namespace chcore { class TOverlappedWriterFB { public: - TOverlappedWriterFB(const TFilesystemFileFeedbackWrapperPtr& spSrcFile, const TFilesystemFileFeedbackWrapperPtr& spDstFile, const TSubTaskStatsInfoPtr& spStats, + TOverlappedWriterFB(const IFilesystemPtr& spFilesystem, + const IFeedbackHandlerPtr& spFeedbackHandler, + TWorkerThreadController& rThreadController, + const TSubTaskStatsInfoPtr& spStats, const TFileInfoPtr& spSrcFileInfo, - const logger::TLogFileDataPtr& spLogFileData, const TOrderedBufferQueuePtr& spBuffersToWrite, - unsigned long long ullFilePos, const TBufferListPtr& spEmptyBuffers); + const TSmartPath& pathDst, + const logger::TLogFileDataPtr& spLogFileData, + const TOrderedBufferQueuePtr& spBuffersToWrite, + const TOverlappedProcessorRangePtr& spRange, + const TBufferListPtr& spEmptyBuffers, + bool bOnlyCreate, + bool bNoBuffering, + bool bProtectReadOnlyFiles); ~TOverlappedWriterFB(); - TSubTaskBase::ESubOperationResult Start(bool bOnlyCreate); + TSubTaskBase::ESubOperationResult Start(); - TOverlappedWriterPtr GetWriter() const { return m_spWriter; } + TOverlappedWriterPtr GetWriter() const; - void SetReleaseMode() { m_bReleaseMode = true; } + void SetReleaseMode(); TSubTaskBase::ESubOperationResult OnWritePossible(); TSubTaskBase::ESubOperationResult OnWriteFailed(); TSubTaskBase::ESubOperationResult OnWriteFinished(bool& bStopProcessing); private: - TSubTaskBase::ESubOperationResult AdjustProcessedSize(file_size_t fsWritten); + void AdjustProcessedSize(file_size_t fsWritten); TSubTaskBase::ESubOperationResult AdjustFinalSize(); private: TOverlappedWriterPtr m_spWriter; - TFilesystemFileFeedbackWrapperPtr m_spSrcFile; TFilesystemFileFeedbackWrapperPtr m_spDstFile; TSubTaskStatsInfoPtr m_spStats; TFileInfoPtr m_spSrcFileInfo; - TFileInfoPtr m_spDstFileInfo; + TOverlappedProcessorRangePtr m_spDataRange; bool m_bReleaseMode = false; + bool m_bOnlyCreate = false; }; using TOverlappedWriterFBPtr = std::shared_ptr;