MarginaliaSearch/code/libraries/big-string/java/nu/marginalia/bigstring/CompressedBigString.java

28 lines
734 B
Java
Raw Normal View History

2023-03-04 12:19:01 +00:00
package nu.marginalia.bigstring;
2023-01-30 08:29:14 +00:00
import java.nio.ByteBuffer;
2023-01-30 08:29:14 +00:00
public class CompressedBigString implements BigString {
private final int originalSize;
private final int length;
private final ByteBuffer encoded;
2023-01-30 08:29:14 +00:00
private final static CompressionBufferPool bufferPool = new CompressionBufferPool();
2023-01-30 08:29:14 +00:00
public CompressedBigString(String stringValue) {
encoded = bufferPool.bufferForThread().compress(stringValue);
originalSize = encoded.position();
2023-01-30 08:29:14 +00:00
length = stringValue.length();
}
@Override
public String decode() {
return bufferPool.bufferForThread().decompress(encoded, length, originalSize);
2023-01-30 08:29:14 +00:00
}
@Override
public int length() {
return length;
}
}