@Override public void clear() { bufferToBeCompressed = null; if (bufferWrapper != null) { bufferWrapper.clear(); } }
@Override public Buffer getBuffer() { return bufferWrapper.getBuffer(); }
@Override public void reset() { bufferWrapper.recycle(); }
try { if (bufferWrapper == null) { bufferWrapper = new ResizableBuffer(); bufferWrapper.resetCapacity(maxCompressedLen); outputByteBuffer = ByteBuffer.wrap(bufferWrapper.getHeapMemory()); outputByteBuffer.position(8); lengthAfterCompression = compressor.compress(inputByteBuffer, outputByteBuffer); bufferWrapper.resetCapacity(maxCompressedLen + (maxCompressedLen >> 1)); outputByteBuffer = ByteBuffer.wrap(bufferWrapper.getHeapMemory()); outputByteBuffer.position(8); lengthAfterCompression = compressor.compress(inputByteBuffer, outputByteBuffer); outputByteBuffer.putInt(lengthAfterCompression); outputByteBuffer.putInt(lengthBeforeCompression); Buffer currBuffer = bufferWrapper.getBuffer(); currBuffer.setReaderIndex(0); currBuffer.setSize(lengthAfterCompression + 8); out.write(currBuffer.getMemorySegment(), currBuffer.getReaderIndex(), currBuffer.getSize()); bufferWrapper.recycle();
int lengthAfterDecompression = in.readInt(); bufferWrapper.resetCapacity(lengthAfterDecompression); ByteBuffer outputByteBuffer = ByteBuffer.wrap(bufferWrapper.getHeapMemory()); Buffer currentBuffer = bufferWrapper.getBuffer(); currentBuffer.setReaderIndex(0); currentBuffer.setSize(lengthAfterDecompression);
DecompressionBufferTransformer(BlockCompressionFactory blockCompressionFactory) { this.decompressor = blockCompressionFactory.getDecompressor(); this.bufferWrapper = new ResizableBuffer(); }
@Override public void clear() { bufferWrapper.clear(); }