From aabd0930e6569efa85f075b054de2200d9642f27 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Thu, 5 Mar 2020 21:40:58 +0000 Subject: Use lz4 through the compressor in vespajlib. --- .../src/main/java/com/yahoo/compress/Compressor.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'vespajlib') diff --git a/vespajlib/src/main/java/com/yahoo/compress/Compressor.java b/vespajlib/src/main/java/com/yahoo/compress/Compressor.java index 9e9fac936f4..ee003734d1a 100644 --- a/vespajlib/src/main/java/com/yahoo/compress/Compressor.java +++ b/vespajlib/src/main/java/com/yahoo/compress/Compressor.java @@ -31,6 +31,10 @@ public class Compressor { this(type, 9, 0.95, 0); } + public Compressor(CompressionType type, int level) { + this(type, level, 0.95, 0); + } + /** * Creates a compressor. * @@ -79,8 +83,7 @@ public class Compressor { case LZ4: int dataSize = uncompressedSize.isPresent() ? uncompressedSize.get() : data.length; if (dataSize < compressMinSizeBytes) return new Compression(CompressionType.INCOMPRESSIBLE, dataSize, data); - LZ4Compressor compressor = level < 7 ? factory.fastCompressor() : factory.highCompressor(); - byte[] compressedData = compressor.compress(data, 0, dataSize); + byte[] compressedData = getCompressor().compress(data, 0, dataSize); if (compressedData.length + 8 >= dataSize * compressionThresholdFactor) return new Compression(CompressionType.INCOMPRESSIBLE, dataSize, data); return new Compression(CompressionType.LZ4, dataSize, compressedData); @@ -88,6 +91,9 @@ public class Compressor { throw new IllegalArgumentException(requestedCompression + " is not supported"); } } + private LZ4Compressor getCompressor() { + return level < 7 ? factory.fastCompressor() : factory.highCompressor(); + } /** Compresses some data using the requested compression type */ public Compression compress(CompressionType requestedCompression, byte[] data) { return compress(requestedCompression, data, Optional.empty()); } /** Compresses some data using the compression type of this compressor */ @@ -133,6 +139,15 @@ public class Compressor { return decompress(compression.type(), compression.data(), 0, compression.uncompressedSize(), Optional.empty()); } + public byte[] compressUnconditionally(byte[] input) { + return getCompressor().compress(input); + } + public void decompressUnconditionally(byte[] input, byte[] output) { + if (input.length > 0) { + factory.safeDecompressor().decompress(input, output); + } + } + public static class Compression { private final CompressionType compressionType; -- cgit v1.2.3