Exemplo n.º 1
0
void* compressLZ4(void* buffin)
{
	ByteStreamPtr localBuffer[PACKET_NUM];
	for(int n=0; n<NTIMES; n++)
	{
		// copy PACKET_NUM packets data locally
		pthread_mutex_lock(&lockp);
		for(int m=0; m<PACKET_NUM; m++)
		{
			ByteStreamPtr data = sharedDataAndInfoBuffer[sharedIndex].data;
			sharedIndex = (sharedIndex+1) % sharedDataAndInfoBuffer.size();
			sizeMB += (data->size() / 1000000.0);
#ifdef DEBUG
			std::cout << "data size " << data->size() << std::endl;
			std::cout << "toto size (MB) " << sizeMB << std::endl;
#endif
			localBuffer[m] = data;
		}
		pthread_mutex_unlock(&lockp);

		int compbytes = 0;
		for(int m=0; m<PACKET_NUM; m++)
		{
			ByteStreamPtr data = localBuffer[m];

			// compress
			ByteStreamPtr datacomp = data->compress(LZ4, COMPRESSION_LEVEL);

			// update local byte counter
			compbytes += datacomp->size();
			
			delete datacomp->getStream(); //HACK
		}

		// update global byte counter
		pthread_mutex_lock(&lockp);
		totbytescomp += compbytes;
		pthread_mutex_unlock(&lockp);
	}

	return 0;
}
Exemplo n.º 2
0
std::vector<ByteStreamPtr> createLZ4Buffer(PacketBufferV* buff)
{
	std::vector<ByteStreamPtr> compbuff;

	for(int i=0; i<buff->size(); i++)
	{
		ByteStreamPtr rawPacket = buff->getNext();
		Packet *p = ps->getPacket(rawPacket);
#ifdef DEBUG
		if(p->getPacketID() == 0) {
			std::cerr << "No packet type recognized" << std::endl;
			continue;
		}
#endif
		ByteStreamPtr data = p->getData();
		ByteStreamPtr datacomp = data->compress(LZ4, COMPRESSION_LEVEL);
		compbuff.push_back(datacomp);
	}

	return compbuff;
}