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:
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user