THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
...
Code Block | ||||
---|---|---|---|---|
| ||||
public interface CacheObjectTransformerManager extends GridCacheSharedManager {
/**
* Transforms the data.
*
* @param original Original data.
* @return Transformed data (started with {@link GridBinaryMarshaller#TRANSFORMED} when restorable)
* or {@code null} when transformation is not possible/suitable.
*/
public @Nullable ByteBuffer transform(ByteBuffer original);
/**
* Restores the data.
*
* @param transformed Transformed data.
* @return Restored data.
*/
public ByteBuffer restore(ByteBuffer transformed);
} |
...
Code Block | ||||
---|---|---|---|---|
| ||||
class CompressionTransformer extends CacheObjectTransformerAdapter { protected ByteBuffer transform(ByteBuffer original) throws IgniteCheckedException { int locOverheadoverhead = 45; // OriginalTransformed length. flag int totalOverhead = CacheObjectTransformerUtils.OVERHEAD + locOverhead;+ length. int origSize = original.remaining(); int lim = origSize - totalOverheadoverhead; if (lim <= 0) return null; // Compression is not profitable. ByteBuffer compressed = byteBuffer(locOverheadoverhead + (int)Zstd.compressBound(origSize)); compressed.put(TRANSFORMED); compressed.putInt(origSize); int size = Zstd.compress(compressed, original, 1); if (size >= lim) return null; // Compression is not profitable. compressed.flip(); return compressed; } protected ByteBuffer restore(ByteBuffer transformed) { ByteBuffer restored = byteBuffer(transformed.getInt()); Zstd.decompress(restored, transformed); restored.flip(); return restored; } } |
...
Code Block | ||||
---|---|---|---|---|
| ||||
class EncryptionTransformer extends CacheObjectTransformerAdapter { private static final int SHIFT = 42; // Secret! protected ByteBuffer transform(ByteBuffer original) throws IgniteCheckedException { ByteBuffer transformed = byteBuffer(original.remaining() + 1); // Same capacity is required. transformed.put(TRANSFORMED); while (original.hasRemaining()) transformed.put((byte)(original.get() + SHIFT)); transformed.flip(); return transformed; } protected ByteBuffer restore(ByteBuffer transformed, int length) { ByteBuffer restored = byteBuffer(transformed.remaining()); // Same size. while (transformed.hasRemaining()) restored.put((byte)(transformed.get() - SHIFT)); restored.flip(); return restored; } } |
...