Error EventBuffer::AcceptEvent(Event *pPMOEvent) { BufferEvent *pEvent; assert(this); assert(m_pQueue); assert(pPMOEvent); pEvent = new BufferEvent; pEvent->iIndex = GetWriteIndex(); pEvent->pEvent = pPMOEvent; m_pQueue->Write(pEvent); return kError_NoErr; }
inline bool EnsureWritableBytes(size_t minWritableBytes, bool growzero = false) { if (WriteableBytes() >= minWritableBytes) { return true; } else { size_t newCapacity = Capacity(); if (0 == newCapacity) { newCapacity = DEFAULT_BUFFER_SIZE; } size_t minNewCapacity = GetWriteIndex() + minWritableBytes; while (newCapacity < minNewCapacity) { newCapacity <<= 1; } char* tmp = NULL; //tmp = (char*) realloc(m_buffer, newCapacity); tmp = (char*) malloc(newCapacity); if (NULL != tmp) { if (growzero) { memset(tmp, 0, newCapacity); } if (NULL != m_buffer) { memcpy(tmp, m_buffer, Capacity()); } if (NULL != m_buffer) { free(m_buffer); } m_buffer = tmp; m_buffer_len = newCapacity; return true; } return false; } }