package yuku.snappy.codec;
import de.jarnbjo.jsnappy.Buffer;
import de.jarnbjo.jsnappy.SnappyCompressor;
import de.jarnbjo.jsnappy.SnappyDecompressor;
class SnappyImplJava extends Snappy {
public SnappyImplJava() {
}
@Override public String getImplementationName() {
return "java";
}
@Override public int compress(byte[] in, int inOffset, byte[] out, int outOffset, int len) {
Buffer buffer = SnappyCompressor.compress(in, inOffset, len, null, 100);
if (out.length - outOffset < buffer.getLength()) {
throw new IllegalArgumentException("SNAPPY_BUFFER_TOO_SMALL");
}
byte[] data = buffer.getData();
System.arraycopy(data, 0, out, outOffset, buffer.getLength());
return buffer.getLength();
}
@Override public int decompress(byte[] in, int inOffset, byte[] out, int outOffset, int len) {
Buffer buffer = SnappyDecompressor.decompress(in, inOffset, len);
if (out.length - outOffset < buffer.getLength()) {
throw new IllegalArgumentException("SNAPPY_BUFFER_TOO_SMALL");
}
byte[] data = buffer.getData();
System.arraycopy(data, 0, out, outOffset, buffer.getLength());
return buffer.getLength();
}
}