/** * Return the appropriate implementation of the zlib decompressor. * * @param conf configuration * @return the appropriate implementation of the zlib decompressor. */ public static Decompressor getZlibDecompressor(Configuration conf) { return (isNativeZlibLoaded(conf)) ? new ZlibDecompressor() : new BuiltInZlibInflater(); }
/** * Returns the total number of compressed bytes input so far.</p> * * @return the total (non-negative) number of compressed bytes input so far */ public long getBytesRead() { checkStream(); return getBytesRead(stream); }
/** * Returns the total number of uncompressed bytes output so far. * * @return the total (non-negative) number of uncompressed bytes output so far */ public long getBytesWritten() { checkStream(); return getBytesWritten(stream); }
/** * Returns the number of bytes remaining in the input buffers; normally * called when finished() is true to determine amount of post-gzip-stream * data.</p> * * @return the total (non-negative) number of unprocessed bytes in input */ @Override public int getRemaining() { checkStream(); return userBufLen + getRemaining(stream); // userBuf + compressedDirectBuf }
private byte[] compressDecompressZlib(byte[] rawData, ZlibCompressor zlibCompressor, ZlibDecompressor zlibDecompressor) throws IOException { int cSize = 0; byte[] compressedByte = new byte[rawData.length]; byte[] decompressedRawData = new byte[rawData.length]; zlibCompressor.setInput(rawData, 0, rawData.length); zlibCompressor.finish(); while (!zlibCompressor.finished()) { cSize = zlibCompressor.compress(compressedByte, 0, compressedByte.length); } zlibCompressor.reset(); assertTrue(zlibDecompressor.getBytesWritten() == 0); assertTrue(zlibDecompressor.getBytesRead() == 0); assertTrue(zlibDecompressor.needsInput()); zlibDecompressor.setInput(compressedByte, 0, cSize); assertFalse(zlibDecompressor.needsInput()); while (!zlibDecompressor.finished()) { zlibDecompressor.decompress(decompressedRawData, 0, decompressedRawData.length); } assertTrue(zlibDecompressor.getBytesWritten() == rawData.length); assertTrue(zlibDecompressor.getBytesRead() == cSize); zlibDecompressor.reset(); assertTrue(zlibDecompressor.getRemaining() == 0); assertArrayEquals( "testZlibCompressorDecompressorWithConfiguration array equals error", rawData, decompressedRawData); return decompressedRawData; }
/** * Resets everything including the input buffers (user and direct).</p> */ @Override public void reset() { checkStream(); reset(stream); finished = false; needDict = false; compressedDirectBufOff = compressedDirectBufLen = 0; uncompressedDirectBuf.limit(directBufferSize); uncompressedDirectBuf.position(directBufferSize); userBufOff = userBufLen = 0; }
try { ZlibCompressor compressor = new ZlibCompressor(); ZlibDecompressor decompressor = new ZlibDecompressor(); assertFalse("testZlibCompressDecompress finished error", compressor.finished()); "testZlibCompressDecompress compressed size no less then original size", cSize < rawDataSize); decompressor.setInput(compressedResult, 0, cSize); byte[] decompressedBytes = new byte[rawDataSize]; decompressor.decompress(decompressedBytes, 0, decompressedBytes.length); assertArrayEquals("testZlibCompressDecompress arrays not equals ", rawData, decompressedBytes); compressor.reset(); decompressor.reset(); } catch (IOException ex) { fail("testZlibCompressDecompress ex !!!" + ex);
@Override public void end() { if (stream != 0) { end(stream); stream = 0; } }
int n = 0; try { n = inflateBytesDirect(); presliced.position(presliced.position() + n); if (compressedDirectBufLen > 0) {
@Override public void reset() { super.reset(); endOfInput = true; }
/** * Creates a new decompressor. */ public ZlibDecompressor(CompressionHeader header, int directBufferSize) { this.header = header; this.directBufferSize = directBufferSize; compressedDirectBuf = ByteBuffer.allocateDirect(directBufferSize); uncompressedDirectBuf = ByteBuffer.allocateDirect(directBufferSize); uncompressedDirectBuf.position(directBufferSize); stream = init(this.header.windowBits()); }
@Override public boolean finished() { return (endOfInput && super.finished()); }
private byte[] compressDecompressZlib(byte[] rawData, ZlibCompressor zlibCompressor, ZlibDecompressor zlibDecompressor) throws IOException { int cSize = 0; byte[] compressedByte = new byte[rawData.length]; byte[] decompressedRawData = new byte[rawData.length]; zlibCompressor.setInput(rawData, 0, rawData.length); zlibCompressor.finish(); while (!zlibCompressor.finished()) { cSize = zlibCompressor.compress(compressedByte, 0, compressedByte.length); } zlibCompressor.reset(); assertTrue(zlibDecompressor.getBytesWritten() == 0); assertTrue(zlibDecompressor.getBytesRead() == 0); assertTrue(zlibDecompressor.needsInput()); zlibDecompressor.setInput(compressedByte, 0, cSize); assertFalse(zlibDecompressor.needsInput()); while (!zlibDecompressor.finished()) { zlibDecompressor.decompress(decompressedRawData, 0, decompressedRawData.length); } assertTrue(zlibDecompressor.getBytesWritten() == rawData.length); assertTrue(zlibDecompressor.getBytesRead() == cSize); zlibDecompressor.reset(); assertTrue(zlibDecompressor.getRemaining() == 0); assertArrayEquals( "testZlibCompressorDecompressorWithConfiguration array equals error", rawData, decompressedRawData); return decompressedRawData; }
public synchronized void reset() { checkStream(); reset(stream); finished = false; needDict = false; compressedDirectBufOff = compressedDirectBufLen = 0; uncompressedDirectBuf.limit(directBufferSize); uncompressedDirectBuf.position(directBufferSize); userBufOff = userBufLen = 0; }
/** * Returns the number of bytes remaining in the input buffers; normally * called when finished() is true to determine amount of post-gzip-stream * data.</p> * * @return the total (non-negative) number of unprocessed bytes in input */ @Override public int getRemaining() { checkStream(); return userBufLen + getRemaining(stream); // userBuf + compressedDirectBuf }
try { ZlibCompressor compressor = new ZlibCompressor(); ZlibDecompressor decompressor = new ZlibDecompressor(); assertFalse("testZlibCompressDecompress finished error", compressor.finished()); "testZlibCompressDecompress compressed size no less then original size", cSize < rawDataSize); decompressor.setInput(compressedResult, 0, cSize); byte[] decompressedBytes = new byte[rawDataSize]; decompressor.decompress(decompressedBytes, 0, decompressedBytes.length); assertArrayEquals("testZlibCompressDecompress arrays not equals ", rawData, decompressedBytes); compressor.reset(); decompressor.reset(); } catch (IOException ex) { fail("testZlibCompressDecompress ex !!!" + ex);
@Override protected void finalize() { end(); }
n = inflateBytesDirect(); uncompressedDirectBuf.limit(n);
@Override public void reset() { super.reset(); endOfInput = true; }
/** * Creates a new decompressor. */ public ZlibDecompressor(CompressionHeader header, int directBufferSize) { this.header = header; this.directBufferSize = directBufferSize; compressedDirectBuf = ByteBuffer.allocateDirect(directBufferSize); uncompressedDirectBuf = ByteBuffer.allocateDirect(directBufferSize); uncompressedDirectBuf.position(directBufferSize); stream = init(this.header.windowBits()); }