Exemplo n.º 1
0
/*********************************************************
	Decompress Method
*********************************************************/
int Compression::decompress(void *dest, int destLen, int sourceLen)
{
	void *source = getBuf();
	int compressingMethod = gConfig->networkCompression;
	
	uLongf newSource = sourceLen;
	uLongf newDest = destLen;
	int ret = 0;
	if(sourceLen > 4) {
		if(compressingMethod == 1)
			ret = uncompress((Bytef*) dest, (uLongf*) &newDest, (const Bytef*)source, newSource);
		else if(compressingMethod == 2)
			ret = lzo1b_decompress((const Bytef*)source, newSource, (Bytef*) dest, &newDest, NULL);
		else if(compressingMethod == 3)
			ret = lzo1x_decompress((const Bytef*)source, newSource, (Bytef*) dest, &newDest, NULL);

		if(compressingMethod == 1) {
			if(ret != Z_OK) {
				if(ret == Z_MEM_ERROR){
					LOG("ERROR decompressing: memory error\n");
				}else if(ret == Z_BUF_ERROR){
					LOG("ERROR decompressing: buffer error\n");
				}else if(ret == Z_DATA_ERROR){
					LOG("ERROR decompressing: data error,\n");
				}
			}
		}
	}
	else {
		memcpy(dest, source, sourceLen);
	}
	return (int)newDest;
}
Exemplo n.º 2
0
int64_t lzbench_lzo1b_decompress(char *inbuf, size_t insize, char *outbuf, size_t outsize, size_t level, size_t, char*)
{
	lzo_uint decomplen = 0;

    if (lzo1b_decompress((uint8_t*)inbuf, insize, (uint8_t*)outbuf, &decomplen, NULL) != LZO_E_OK) return 0;

	return decomplen; 
}
Exemplo n.º 3
0
int64_t lzbench_lzo_decompress(char *inbuf, size_t insize, char *outbuf, size_t outsize, size_t level, size_t, size_t)
{
    lzo_uint decomplen = 0;

    switch (level)
    {
    default:
    case 1:
    case 9:
    case 99:
    case 999:
        if (lzo1b_decompress((uint8_t*)inbuf, insize, (uint8_t*)outbuf, &decomplen, NULL) != LZO_E_OK) return 0;
        break;
    case 1001:
    case 1009:
    case 1099:
    case 1999:
        if (lzo1c_decompress((uint8_t*)inbuf, insize, (uint8_t*)outbuf, &decomplen, NULL) != LZO_E_OK) return 0;
        break;
    case 2001:
    case 2999:
        if (lzo1f_decompress((uint8_t*)inbuf, insize, (uint8_t*)outbuf, &decomplen, NULL) != LZO_E_OK) return 0;
        break;
    case 3001:
    case 3999:
        if (lzo1x_decompress((uint8_t*)inbuf, insize, (uint8_t*)outbuf, &decomplen, NULL) != LZO_E_OK) return 0;
        break;
    case 4001:
    case 4999:
        if (lzo1y_decompress((uint8_t*)inbuf, insize, (uint8_t*)outbuf, &decomplen, NULL) != LZO_E_OK) return 0;
        break;
    case 5999:
        if (lzo1z_decompress((uint8_t*)inbuf, insize, (uint8_t*)outbuf, &decomplen, NULL) != LZO_E_OK) return 0;
        break;
    case 6999:
        if (lzo2a_decompress((uint8_t*)inbuf, insize, (uint8_t*)outbuf, &decomplen, NULL) != LZO_E_OK) return 0;
        break;
    }

    return decomplen;
}