mxoemu/Proxy/TCPVariableLengthPacket.cpp
2009-08-11 12:17:38 +00:00

49 lines
No EOL
1 KiB
C++

#include "Util.h"
#include "TCPVariableLengthPacket.h"
TCPVariableLengthPacket::TCPVariableLengthPacket() : ByteBuffer()
{
}
TCPVariableLengthPacket::TCPVariableLengthPacket( const byte* pData,size_t pSize )
{
string wholePacket = string((const char*)pData,pSize);
int bytesToRemove = 1;
byte firstByte = wholePacket.data()[0];
if (firstByte > 0x7F)
{
bytesToRemove = 2;
firstByte-=0x80;
}
this->append(wholePacket.substr(bytesToRemove));
this->rpos(0);
}
ByteBuffer TCPVariableLengthPacket::GetContentsWithSize()
{
uint16 packetSize = this->size();
if (packetSize > 0x7f)
{
packetSize = swap16(packetSize | 0x8000);
ByteBuffer packetThing;
packetThing << packetSize;
packetThing.append((const byte*)this->contents(),this->size());
return packetThing;
}
else
{
ByteBuffer packetThing;
packetThing << byte(packetSize);
packetThing.append((const byte*)this->contents(),this->size());
return packetThing;
}
}
TCPVariableLengthPacket::~TCPVariableLengthPacket()
{
}