compress/decompress test

This commit is contained in:
Taro L. Saito 2011-03-30 13:58:27 +09:00
parent 23bc6f6438
commit 2a57e2e52b
4 changed files with 20 additions and 15 deletions

View File

@ -38,10 +38,10 @@ public class Snappy
int uLen = uncompressed.remaining(); int uLen = uncompressed.remaining();
int compressedSize = SnappyNative.rawCompress(uncompressed, uPos, uLen, compressed, compressed.position()); int compressedSize = SnappyNative.rawCompress(uncompressed, uPos, uLen, compressed, compressed.position());
// pos limit // // pos limit
// [ ....XXXXXX.........] // // [ ....XXXXXX.........]
uncompressed.limit(uncompressed.capacity()); // uncompressed.limit(uncompressed.capacity());
uncompressed.position(uPos + uLen); // uncompressed.position(uPos + uLen);
// pos limit // pos limit
// [ ......BBBBBBB.........] // [ ......BBBBBBB.........]
@ -69,8 +69,8 @@ public class Snappy
boolean ret = SnappyNative.rawDecompress(compressed, cPos, cLen, decompressed, decompressed.position()); boolean ret = SnappyNative.rawDecompress(compressed, cPos, cLen, decompressed, decompressed.position());
compressed.limit(compressed.capacity()); // compressed.limit(compressed.capacity());
compressed.position(cPos + cLen); // compressed.position(cPos + cLen);
return ret; return ret;
} }

View File

@ -62,11 +62,8 @@ JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_maxCompressedLength
JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_getUncompressedLength JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_getUncompressedLength
(JNIEnv * env, jclass self, jobject compressed, jint cpos, jint clen) (JNIEnv * env, jclass self, jobject compressed, jint cpos, jint clen)
{ {
char* compressedBuffer = (char*) env->GetDirectBufferAddress(compressed); char* compressedBuffer = (char*) env->GetDirectBufferAddress(compressed) + cpos;
if(compressedBuffer == 0) size_t result;
return (jint) -1;
compressedBuffer += cpos;
snappy::GetUncompressedLength(compressedBuffer, (size_t) clen, &result); snappy::GetUncompressedLength(compressedBuffer, (size_t) clen, &result);
return (jint) result; return (jint) result;
} }

View File

@ -55,11 +55,19 @@ public class SnappyTest
int maxCompressedLen = Snappy.getMaxCompressedLength(src.remaining()); int maxCompressedLen = Snappy.getMaxCompressedLength(src.remaining());
_logger.info("max compressed length:" + maxCompressedLen); _logger.info("max compressed length:" + maxCompressedLen);
int uncompressedLen = Snappy.getUncompressedLength(src); ByteBuffer compressed = ByteBuffer.allocateDirect(1024);
int compressedSize = Snappy.compress(src, compressed);
_logger.info("compressed size: " + compressedSize);
int uncompressedLen = Snappy.getUncompressedLength(compressed);
_logger.info("uncompressed length: " + uncompressedLen); _logger.info("uncompressed length: " + uncompressedLen);
ByteBuffer extract = ByteBuffer.allocateDirect(1024);
Snappy.decompress(compressed, extract);
extract.limit(uncompressedLen);
ByteBuffer dest = ByteBuffer.allocateDirect(1024); byte[] b = new byte[uncompressedLen];
Snappy.compress(src, dest); extract.get(b);
String decompressed = new String(b);
_logger.info(decompressed);
} }
} }