1
0

Rewritten all packets to use buffers instead of direct sockets, for future cSocketThreads compatibility.

Moved data sending from cPacket into cSocket

git-svn-id: http://mc-server.googlecode.com/svn/trunk@240 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
madmaxoft@gmail.com
2012-02-07 20:49:52 +00:00
parent 16feb0924e
commit b7d524423c
109 changed files with 1896 additions and 1305 deletions

View File

@@ -12,12 +12,13 @@
cPacket_MapChunk::~cPacket_MapChunk()
{
if( m_CompressedData )
{
delete [] m_CompressedData;
}
delete [] m_CompressedData;
}
cPacket_MapChunk::cPacket_MapChunk(cChunk* a_Chunk)
{
m_PacketID = E_MAP_CHUNK;
@@ -31,7 +32,7 @@ cPacket_MapChunk::cPacket_MapChunk(cChunk* a_Chunk)
m_SizeZ = 15;
uLongf CompressedSize = compressBound( cChunk::c_BlockDataSize );
char* CompressedBlockData = new char[CompressedSize];
char * CompressedBlockData = new char[CompressedSize];
compress2( (Bytef*)CompressedBlockData, &CompressedSize, (const Bytef*)a_Chunk->pGetBlockData(), cChunk::c_BlockDataSize, Z_DEFAULT_COMPRESSION);
@@ -39,6 +40,10 @@ cPacket_MapChunk::cPacket_MapChunk(cChunk* a_Chunk)
m_CompressedSize = CompressedSize;
}
cPacket_MapChunk::cPacket_MapChunk( const cPacket_MapChunk & a_Copy )
{
m_PacketID = E_MAP_CHUNK;
@@ -54,23 +59,23 @@ cPacket_MapChunk::cPacket_MapChunk( const cPacket_MapChunk & a_Copy )
memcpy( m_CompressedData, a_Copy.m_CompressedData, m_CompressedSize );
}
bool cPacket_MapChunk::Send(cSocket & a_Socket)
void cPacket_MapChunk::Serialize(AString & a_Data) const
{
unsigned int TotalSize = c_Size + m_CompressedSize;
char* Message = new char[TotalSize];
AppendByte (a_Data, m_PacketID);
AppendInteger(a_Data, m_PosX);
AppendShort (a_Data, m_PosY);
AppendInteger(a_Data, m_PosZ);
AppendByte (a_Data, m_SizeX);
AppendByte (a_Data, m_SizeY);
AppendByte (a_Data, m_SizeZ);
AppendInteger(a_Data, m_CompressedSize);
AppendData (a_Data, m_CompressedData, m_CompressedSize);
}
unsigned int i = 0;
AppendByte ( (char)m_PacketID, Message, i );
AppendInteger ( m_PosX, Message, i );
AppendShort ( m_PosY, Message, i );
AppendInteger ( m_PosZ, Message, i );
AppendByte ( m_SizeX, Message, i );
AppendByte ( m_SizeY, Message, i );
AppendByte ( m_SizeZ, Message, i );
AppendInteger ( m_CompressedSize, Message, i );
AppendData ( m_CompressedData, m_CompressedSize, Message, i );
bool RetVal = !cSocket::IsSocketError( SendData( a_Socket, Message, TotalSize, 0 ) );
delete [] Message;
return RetVal;
}