/********************************************************* 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; }
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; }
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; }