Index: src/libchcore/TOverlappedWriter.h =================================================================== diff -u -N -r3ccbdb8d3eac3427e6d3354854476e57fdc7ceb9 -r6e4ac7776b68464371cd8522a2a8d79fbcab3b28 --- src/libchcore/TOverlappedWriter.h (.../TOverlappedWriter.h) (revision 3ccbdb8d3eac3427e6d3354854476e57fdc7ceb9) +++ src/libchcore/TOverlappedWriter.h (.../TOverlappedWriter.h) (revision 6e4ac7776b68464371cd8522a2a8d79fbcab3b28) @@ -24,6 +24,7 @@ #include "TOrderedBufferQueue.h" #include "TFailedBufferQueue.h" #include "TWriteBufferQueueWrapper.h" +#include "TBufferList.h" namespace chcore { @@ -40,6 +41,8 @@ TOverlappedWriter& operator=(const TOverlappedWriter&) = delete; + TOverlappedDataBuffer* GetWriteBuffer(); + // buffer management - writer void AddFailedWriteBuffer(TOverlappedDataBuffer* pBuffer); TOverlappedDataBuffer* GetFailedWriteBuffer(); @@ -48,6 +51,7 @@ TOverlappedDataBuffer* GetFinishedBuffer(); // processing info + void MarkAsFinalized(TOverlappedDataBuffer* pBuffer); bool IsDataWritingFinished() const { return m_bDataWritingFinished; } // event access @@ -56,6 +60,7 @@ HANDLE GetEventWriteFinishedHandle() const { return m_tFinishedBuffers.GetHasBuffersEvent(); } size_t GetBufferCount() const; + void ReleaseBuffers(const TBufferListPtr& spList); private: logger::TLoggerPtr m_spLog; @@ -66,6 +71,7 @@ TOrderedBufferQueue m_tFinishedBuffers; bool m_bDataWritingFinished = false; // output file was already written to the end + TOverlappedDataBuffer* m_pLastPartBuffer = nullptr; }; }