THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||||
---|---|---|---|---|
| ||||
protected static class CompressionTransformerSpi extends CacheObjectTransformerSpiAdapter {
private static final LZ4Factory lz4Factory = LZ4Factory.fastestInstance();
protected ByteBuffer transform(ByteBuffer original) throws IgniteCheckedException {
int lim = original.remaining() - CacheObjectTransformerSpi.OVERHEAD;
if (lim <= 0)
throw new IgniteCheckedException("Compression is not profitable.");
ByteBuffer compressed = byteBuffer(lim);
Zstd.compress(compressed, original, 1);
compressed.flip();
return compressed;
}
protected ByteBuffer restore(ByteBuffer transformed, int length) {
ByteBuffer restored = byteBuffer(length);
Zstd.decompress(restored, transformed);
restored.flip();
return restored;
}
} |
...
Code Block | ||||
---|---|---|---|---|
| ||||
class EncryptionTransformerSpi extends CacheObjectTransformerSpiAdapter {
private static final int SHIFT = 42; // Secret!
protected ByteBuffer transform(ByteBuffer original) throws IgniteCheckedException {
ByteBuffer transformed = byteBuffer(original.remaining()); // Same capacity is required.
while (original.hasRemaining())
transformed.put((byte)(original.get() + SHIFT));
transformed.flip();
return transformed;
}
protected ByteBuffer restore(ByteBuffer transformed, int length) {
ByteBuffer restored = byteBuffer(length);
while (transformed.hasRemaining())
restored.put((byte)(transformed.get() - SHIFT));
restored.flip();
return restored;
}
} |
Transformation requires additional memory allocation and subsequent GC work.
...