From b7d524423c23470cd11e720eeb48368c072838cb Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Tue, 7 Feb 2012 20:49:52 +0000 Subject: 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 --- source/packets/cPacket_MapChunk.cpp | 53 ++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 24 deletions(-) (limited to 'source/packets/cPacket_MapChunk.cpp') diff --git a/source/packets/cPacket_MapChunk.cpp b/source/packets/cPacket_MapChunk.cpp index 6bc764e09..a9448f050 100644 --- a/source/packets/cPacket_MapChunk.cpp +++ b/source/packets/cPacket_MapChunk.cpp @@ -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]; - - 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; -} \ No newline at end of file + 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); +} + + + + -- cgit v1.2.3