Index: src/libchcore/TWriteBufferQueueWrapper.cpp =================================================================== diff -u -N -r3ccbdb8d3eac3427e6d3354854476e57fdc7ceb9 -r6e4ac7776b68464371cd8522a2a8d79fbcab3b28 --- src/libchcore/TWriteBufferQueueWrapper.cpp (.../TWriteBufferQueueWrapper.cpp) (revision 3ccbdb8d3eac3427e6d3354854476e57fdc7ceb9) +++ src/libchcore/TWriteBufferQueueWrapper.cpp (.../TWriteBufferQueueWrapper.cpp) (revision 6e4ac7776b68464371cd8522a2a8d79fbcab3b28) @@ -19,17 +19,22 @@ #include "stdafx.h" #include "TWriteBufferQueueWrapper.h" #include "TOverlappedDataBuffer.h" +#include "TCoreException.h" namespace chcore { TWriteBufferQueueWrapper::TWriteBufferQueueWrapper(const TOrderedBufferQueuePtr& spQueue) : m_spDataQueue(spQueue), m_eventHasBuffers(true, false) { + UpdateHasBuffers(); } void TWriteBufferQueueWrapper::Push(TOverlappedDataBuffer* pBuffer) { + if (!pBuffer) + throw TCoreException(eErr_InvalidPointer, L"pBuffer", LOCATION); + m_tClaimedQueue.Push(pBuffer); UpdateHasBuffers(); } @@ -80,4 +85,10 @@ { m_eventHasBuffers.SetEvent(IsBufferReady()); } + + void TWriteBufferQueueWrapper::ReleaseBuffers(const TBufferListPtr& spBuffers) + { + m_spDataQueue->ReleaseBuffers(spBuffers); + m_tClaimedQueue.ReleaseBuffers(spBuffers); + } }