Beispiel #1
0
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;
}
Beispiel #2
0
				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;
					}
				}