mBoolR(0),
mBoolW(0),
mBoolNumR(0),
- mBoolNumW(0)
-{
-}
+ mBoolNumW(0) {}
Packet::Packet(const char* data, size_t size) :
mBuffer((char*)malloc(size)),
mBoolNumR(0),
mBoolNumW(0)
{
- memcpy(mBuffer, data, size);
+ if (mBuffer) memcpy(mBuffer, data, size);
+}
+
+
+Packet::Packet(const Packet& copy) :
+ mBuffer((char*)malloc(copy.mSize)),
+ mSize(copy.mSize),
+ mR(copy.mR),
+ mW(copy.mW),
+ mBoolR(copy.mBoolR),
+ mBoolW(copy.mBoolW),
+ mBoolNumR(copy.mBoolNumR),
+ mBoolNumW(copy.mBoolNumW)
+{
+ if (mBuffer) memcpy(mBuffer, copy.mBuffer, mSize);
+}
+
+Packet& Packet::operator=(const Packet& copy)
+{
+ free(mBuffer);
+
+ mBuffer = (char*)malloc(copy.mSize);
+ mSize = copy.mSize;
+ mR = copy.mR;
+ mW = copy.mW;
+ mBoolR = copy.mBoolR;
+ mBoolW = copy.mBoolW;
+ mBoolNumR = copy.mBoolNumR;
+ mBoolNumW = copy.mBoolNumW;
+ return *this;
}
size_t nBytes = std::min(size, mSize - mW);
if (!mBuffer || nBytes < size)
{
- int numPages = 1 + size / PAGE_SIZE;
- int newSize = mSize + numPages * PAGE_SIZE;
+ int nPages = 1 + size / PAGE_SIZE;
+ int newSize = mSize + nPages * PAGE_SIZE;
char* newBuffer = (char*)realloc(mBuffer, newSize);
if (newBuffer)
{
mBuffer = newBuffer;
mSize = newSize;
+ nBytes = size;
}
+ if (!mBuffer) return 0;
}
memcpy(&mBuffer[mW], bytes, nBytes);
mW += nBytes;
}
+void Packet::clear()
+{
+ mR = 0;
+ mW = 0;
+ mBoolR = 0;
+ mBoolW = 0;
+ mBoolNumR = 0;
+ mBoolNumW = 0;
+}
+
+
} // namespace Mf