Index: src/ch/DataBuffer.cpp =================================================================== diff -u -N -r5057e08b0cc064972abeb94a488e5f12d9db14a0 -r45cf96558ba334192ef42687d4dac01c46d6ffd8 --- src/ch/DataBuffer.cpp (.../DataBuffer.cpp) (revision 5057e08b0cc064972abeb94a488e5f12d9db14a0) +++ src/ch/DataBuffer.cpp (.../DataBuffer.cpp) (revision 45cf96558ba334192ef42687d4dac01c46d6ffd8) @@ -32,6 +32,23 @@ && m_uiLANSize == bsSizes.m_uiLANSize); } +CDataBuffer::CDataBuffer() : + m_pBuffer(NULL), + m_uiRealSize(0) +{ + m_bsSizes.m_uiDefaultSize=0; + m_bsSizes.m_uiOneDiskSize=0; + m_bsSizes.m_uiTwoDisksSize=0; + m_bsSizes.m_uiCDSize=0; + m_bsSizes.m_uiLANSize=0; + m_bsSizes.m_bOnlyDefault=false; +} + +CDataBuffer::~CDataBuffer() +{ + Delete(); +} + const BUFFERSIZES* CDataBuffer::Create(const BUFFERSIZES* pbsSizes) { // if trying to set 0-size buffer @@ -64,33 +81,33 @@ } // modify buffer size to the next 64k boundary - UINT uiRealSize=ROUNDTODS(uiLargest); + UINT uiRealSize = ROUNDTODS(uiLargest); TRACE("Size: %lu, rounded: %lu\n", uiLargest, uiRealSize); - if (m_uiRealSize == uiRealSize) + if(m_uiRealSize == uiRealSize) { - // real buffersize doesn't changed - m_bsSizes=bsSizes; - + // real buffersize hasn't changed + m_bsSizes = bsSizes; + return &m_bsSizes; } - // try to allocate - LPVOID pBuffer=VirtualAlloc(NULL, uiRealSize, MEM_COMMIT, PAGE_READWRITE); - if (pBuffer == NULL) + // try to allocate buffer + LPVOID pBuffer = VirtualAlloc(NULL, uiRealSize, MEM_COMMIT, PAGE_READWRITE); + if(pBuffer == NULL) { - if (m_pBuffer == NULL) + if(m_pBuffer == NULL) { // try safe buffesize - pBuffer=VirtualAlloc(NULL, DEFAULT_SIZE, MEM_COMMIT, PAGE_READWRITE); - if (pBuffer == NULL) + pBuffer = VirtualAlloc(NULL, DEFAULT_SIZE, MEM_COMMIT, PAGE_READWRITE); + if(pBuffer == NULL) return &m_bsSizes; // do not change anything // delete old buffer Delete(); // store data - m_pBuffer=static_cast(pBuffer); + m_pBuffer = static_cast(pBuffer); m_uiRealSize=DEFAULT_SIZE; m_bsSizes.m_bOnlyDefault=bsSizes.m_bOnlyDefault; m_bsSizes.m_uiDefaultSize=DEFAULT_SIZE; @@ -113,17 +130,17 @@ Delete(); // get rid of old buffer // store data - m_pBuffer=static_cast(pBuffer); - m_uiRealSize=uiRealSize; - m_bsSizes=bsSizes; + m_pBuffer = static_cast(pBuffer); + m_uiRealSize = uiRealSize; + m_bsSizes = bsSizes; return &m_bsSizes; } } void CDataBuffer::Delete() { - if (m_pBuffer != NULL) + if(m_pBuffer != NULL) { VirtualFree(static_cast(m_pBuffer), 0, MEM_RELEASE); m_pBuffer=NULL; @@ -135,3 +152,11 @@ m_bsSizes.m_uiLANSize=0; } } + +void CDataBuffer::CutDataFromBuffer(UINT uiCount) +{ + if(uiCount >= m_uiRealSize || !m_pBuffer) + return; // nothing to do + + memmove(m_pBuffer, m_pBuffer + uiCount, m_uiRealSize - uiCount); +}