Index: src/libchcore/TOverlappedReaderFB.h =================================================================== diff -u -N -r10d42e85d810f6da082cb2ce4415dcb72903410e -rb0a003dc39e6d21e34779cf1cf5d8a07318c1f5f --- src/libchcore/TOverlappedReaderFB.h (.../TOverlappedReaderFB.h) (revision 10d42e85d810f6da082cb2ce4415dcb72903410e) +++ src/libchcore/TOverlappedReaderFB.h (.../TOverlappedReaderFB.h) (revision b0a003dc39e6d21e34779cf1cf5d8a07318c1f5f) @@ -23,6 +23,7 @@ #include "TFilesystemFileFeedbackWrapper.h" #include "TOverlappedProcessorRange.h" #include +#include "TThreadedQueueRunner.h" namespace chcore { @@ -42,33 +43,40 @@ DWORD dwChunkSize, bool bNoBuffering, bool bProtectReadOnlyFiles); + TOverlappedReaderFB(const TOverlappedReaderFB& rSrc) = delete; + ~TOverlappedReaderFB(); + TOverlappedReaderFB& operator=(const TOverlappedReaderFB& rSrc) = delete; + TSubTaskBase::ESubOperationResult Start(); void StartThreaded(); TSubTaskBase::ESubOperationResult StopThreaded(); - TOverlappedReaderPtr GetReader() const; + TOrderedBufferQueuePtr GetFinishedQueue() const; void SetReleaseMode(); - TSubTaskBase::ESubOperationResult OnReadPossible(); - TSubTaskBase::ESubOperationResult OnReadFailed(); + HANDLE GetEventDataSourceFinishedHandle() const; private: TSubTaskBase::ESubOperationResult UpdateFileStats(); - void ThreadProc(); + TSubTaskBase::ESubOperationResult OnReadPossible(); + TSubTaskBase::ESubOperationResult OnReadFailed(); + + TOverlappedReaderPtr GetReader() const; + private: TOverlappedReaderPtr m_spReader; + TEvent m_eventDataSourceFinished; IFilesystemPtr m_spFilesystem; TFilesystemFileFeedbackWrapperPtr m_spSrcFile; TSubTaskStatsInfoPtr m_spStats; TFileInfoPtr m_spSrcFileInfo; TWorkerThreadController& m_rThreadController; - std::unique_ptr m_spReadThread; TSubTaskBase::ESubOperationResult m_eThreadResult = TSubTaskBase::eSubResult_Continue; };