1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
#include <stddef.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include "WriteBuffer.H"
WriteBuffer::WriteBuffer(unsigned int size):
bufferSize_(size), numBytesInBuffer_(0), buffer_(new unsigned char[size]),
index_(NULL)
{
}
WriteBuffer::~WriteBuffer()
{
delete[]buffer_;
}
unsigned char *
WriteBuffer::addMessage(unsigned int numBytes)
{
if (numBytesInBuffer_ + numBytes > bufferSize_)
{
unsigned int indexOffset = 0;
if (index_ && *index_)
indexOffset = *index_ - buffer_;
bufferSize_ = numBytesInBuffer_ + numBytes;
unsigned char *newBuffer = new unsigned char[bufferSize_];
memcpy(newBuffer, buffer_, numBytesInBuffer_);
delete[]buffer_;
buffer_ = newBuffer;
if (index_ && *index_)
*index_ = buffer_ + indexOffset;
}
unsigned char *result = buffer_ + numBytesInBuffer_;
numBytesInBuffer_ += numBytes;
return result;
}
|