void Message::prepare() { if( !packet ) createPacket(); size_t totalSize = (size_t) ms->position; size_t bufSize = GetCompressionBufferSize(totalSize); enet_packet_resize(packet, bufSize); MemoryStream pms; StreamMemoryInit(&pms); StreamMemorySetRawBuffer(&pms, packet->data); EncodeVariableInteger(&pms, id); StreamWrite(&pms, &flags, sizeof(flags)); if( GetBitFlag(flags, MessageFlags::Compressed) ) { uint8* in = &ms->data[0]; uint8* out = pms.buffer + pms.position; int32 length = fastlz_compress_level(1, in, totalSize, out); pms.position += length; } else { enet_packet_resize(packet, totalSize + pms.position); StreamWrite(&pms, &ms->data[0], totalSize); } packet->dataLength = (size_t) pms.position; }
void Packet::prepare() { if( !packet ) createPacket(); size_t totalSize = (size_t) ms.getPosition(); size_t bufSize = GetCompressionBufferSize(totalSize); enet_packet_resize(packet, bufSize); MemoryStream pms; pms.setRawBuffer(packet->data); EncodeVariableInteger(&pms, id); pms.write((uint8*) &flags, sizeof(flags)); if( GetBitFlag(flags, PacketFlags::Compressed) ) { uint8* in = ms.data.Buffer(); uint8* out = pms.buffer + pms.position; int32 length = fastlz_compress_level(1, in, totalSize, out); pms.position += length; } else { enet_packet_resize(packet, totalSize + pms.position); pms.write(ms.data.Buffer(), totalSize); } packet->dataLength = (size_t) pms.position; }