Clone
ixen <ixen@copyhandler.com>
committed
on 11 Nov 16
Fixed write retries not working properly (CH-297). Added file re-opening on read and write failures (CH-197).
ParallelizeReaderWriter + 3 more
/libchcore/TFilesystemFileFeedbackWrapper.h (+1 -0)
38 38                 TFilesystemFileFeedbackWrapper& operator=(const TFilesystemFileFeedbackWrapper&) = delete;
39 39
40 40                 TSubTaskBase::ESubOperationResult HandleFileAlreadyExistsFB(const TFileInfoPtr& spSrcFileInfo, bool& bShouldAppend, bool& bSkip);
41 41
42 42                 TSubTaskBase::ESubOperationResult TruncateFileFB(file_size_t fsNewSize, bool& bSkip);
43 43
44 44                 TSubTaskBase::ESubOperationResult ReadFileFB(TOverlappedDataBuffer& rBuffer, bool& bSkip);
45 45                 TSubTaskBase::ESubOperationResult WriteFileFB(TOverlappedDataBuffer& rBuffer, bool& bSkip);
46 46
47 47                 TSubTaskBase::ESubOperationResult FinalizeFileFB(TOverlappedDataBuffer& rBuffer, bool& bSkip);
48 48
49 49                 TSubTaskBase::ESubOperationResult HandleReadError(TOverlappedDataBuffer& rBuffer, bool& bSkip);
50 50                 TSubTaskBase::ESubOperationResult HandleWriteError(TOverlappedDataBuffer& rBuffer, bool& bSkip);
51 51
52 52                 bool IsFreshlyCreated() const { return m_spFile->IsFreshlyCreated(); }
53 53                 TSmartPath GetFilePath() const { return m_spFile->GetFilePath(); }
54 54                 file_size_t GetFileSize() const { return m_spFile->GetFileSize(); }
55 55                 file_size_t GetSeekPositionForResume(file_size_t fsLastAvailablePosition) { return m_spFile->GetSeekPositionForResume(fsLastAvailablePosition); }
56 56
57 57                 bool IsOpen() const { return m_spFile->IsOpen(); }
  58                 void Close() { m_spFile->Close(); }
58 59
59 60         private:
60 61                 bool WasKillRequested(const TFeedbackResult& rFeedbackResult) const;
61 62
62 63         private:
63 64                 IFilesystemFilePtr m_spFile;
64 65                 IFeedbackHandlerPtr m_spFeedbackHandler;
65 66                 IFilesystemPtr m_spFilesystem;
66 67                 logger::TLoggerPtr m_spLog;
67 68                 TWorkerThreadController& m_rThreadController;
68 69         };
69 70
70 71         using TFilesystemFileFeedbackWrapperPtr = std::shared_ptr<TFilesystemFileFeedbackWrapper>;
71 72 }
72 73
73 74 #endif