'''org.simantics.fastlz''' is a simple JNI wrapper for different open-source real-time data compression libraries. The native library contains pure C implementations. The library also contains pure Java ports of the algorithms which are employed by the front-end if the native library is not available or if arguments are java heap buffers instead of native direct buffers. Current codecs: ;[http://www.fastlz.org/ FastLZ]: Our version is based on [http://fastlz.googlecode.com/svn/trunk/ SVN revision 12]. ;[http://code.google.com/p/lz4/ LZ4]: Our version is based on [http://lz4.googlecode.com/svn/trunk/ SVN revision 68]. = Dependencies = * No external Java or native dependencies. It is a self-sufficient JAR ready for deployment as OSGi bundle or POJO. Native DLL's only depend on standard libraries that are always available. = Manual = Use of both FastLZ and LZ4 codecs happens through the [[https://www.simantics.org/svn/simantics/utils/trunk/org.simantics.fastlz/src/org/simantics/fastlz/CompressionCodec.java|org.simantics.fastlz.CompressionCodec]] interface and the [[https://www.simantics.org/svn/simantics/utils/trunk/org.simantics.fastlz/src/org/simantics/fastlz/Compressions.java|org.simantics.fastlz.Compressions]] facade class:
public final class Compressions { public static final String FASTLZ = "FastLZ"; public static final String LZ4 = "LZ4"; public static CompressionCodec get(String codec); public static OutputStream write(String codec, File file) throws FileNotFoundException; public static InputStream read(String codec, File file) throws FileNotFoundException; } public interface CompressionCodec { int compressBound(int inputSize); int compressBuffer(ByteBuffer input, int inputOffset, int length, ByteBuffer output, int outputOffset); int decompressBuffer(ByteBuffer input, int inputOffset, int length, ByteBuffer output, int outputOffset, int maxout); InputStream read(File file) throws FileNotFoundException; OutputStream write(File file) throws FileNotFoundException; }