Index: src/libchcore/TOverlappedWriter.cpp =================================================================== diff -u -N -r518d1a3484cde91ff17c071211df5e40cb3487e3 -rd99302fce795dbb5139659016a5da7948f141fb4 --- src/libchcore/TOverlappedWriter.cpp (.../TOverlappedWriter.cpp) (revision 518d1a3484cde91ff17c071211df5e40cb3487e3) +++ src/libchcore/TOverlappedWriter.cpp (.../TOverlappedWriter.cpp) (revision d99302fce795dbb5139659016a5da7948f141fb4) @@ -25,10 +25,10 @@ namespace chcore { TOverlappedWriter::TOverlappedWriter(const logger::TLogFileDataPtr& spLogFileData, const TOrderedBufferQueuePtr& spBuffersToWrite, - const TOverlappedProcessorRangePtr& spRange, const TBufferListPtr& spEmptyBuffers) : + const TOverlappedProcessorRangePtr& spRange, const TBufferListPtr& spEmptyBuffers, size_t stMaxOtfBuffers, TSharedCountPtr spOtfBuffersCount) : m_spLog(logger::MakeLogger(spLogFileData, L"DataBuffer")), m_spEmptyBuffers(spEmptyBuffers), - m_tBuffersToWrite(spBuffersToWrite), + m_tBuffersToWrite(spBuffersToWrite, stMaxOtfBuffers, spOtfBuffersCount), m_tFinishedBuffers(spEmptyBuffers, spRange != nullptr ? spRange->GetResumePosition() : 0) { if(!spLogFileData) @@ -39,12 +39,15 @@ throw TCoreException(eErr_InvalidArgument, L"spEmptyBuffers is NULL", LOCATION); if(!spRange) throw TCoreException(eErr_InvalidArgument, L"spRange is NULL", LOCATION); + if(!spOtfBuffersCount) + throw TCoreException(eErr_InvalidArgument, L"spOtfBuffersCount is NULL", LOCATION); m_dataRangeChanged = spRange->GetNotifier().connect(boost::bind(&TOverlappedWriter::UpdateProcessingRange, this, _1)); } TOverlappedWriter::~TOverlappedWriter() { + m_dataRangeChanged.disconnect(); } void TOverlappedWriter::AddEmptyBuffer(TOverlappedDataBuffer* pBuffer)