@Override public void destroy() { if (destroyed) { return; } destroyed = true; CodecPool.returnDecompressor(decompressor); } }
/** * Return the number of leased {@link Decompressor}s for this * {@link CompressionCodec} */ public static int getLeasedDecompressorsCount(CompressionCodec codec) { return (codec == null) ? 0 : getLeaseCount(decompressorCounts, codec.getDecompressorType()); } }
@Override public void flush() throws IOException { CompressionOutputStream cout = (CompressionOutputStream) out; cout.finish(); cout.flush(); cout.resetState(); } }
@Override public CompressedSliceOutput get() { try { compressor.reset(); bufferedOutput.reset(); CompressionOutputStream compressionStream = codec.createOutputStream(bufferedOutput, compressor); return new CompressedSliceOutput(compressionStream, bufferedOutput, this, () -> CodecPool.returnCompressor(compressor)); } catch (IOException e) { throw new UncheckedIOException(e); } } }
@Override public void decompress(Slice compressed, Slice uncompressed) throws RcFileCorruptionException { checkState(!destroyed, "Codec has been destroyed"); decompressor.reset(); try (CompressionInputStream decompressorStream = codec.createInputStream(compressed.getInput(), decompressor)) { uncompressed.setBytes(0, decompressorStream, uncompressed.length()); } catch (IndexOutOfBoundsException | IOException e) { throw new RcFileCorruptionException(e, "Compressed stream is truncated"); } }
@Override public CompressedSliceOutput get() { try { compressor.reset(); compressedOutput.reset(); CompressionOutputStream compressionStream = codec.createOutputStream(compressedOutput, compressor); return new CompressedSliceOutput(compressionStream, compressedOutput, this, () -> {}); } catch (IOException e) { throw new UncheckedIOException(e); } } }
public HadoopDecompressor(CompressionCodec codec) { this.codec = requireNonNull(codec, "codec is null"); decompressor = CodecPool.getDecompressor(codec); }
@Override public void finish() throws IOException { if (!compressor.finished()) { rawWriteInt((int)compressor.getBytesRead()); compressor.finish(); while (!compressor.finished()) { compress(); } } }
@Override CompressionCodec getCodec() { if (codec == null) { codec = new DefaultCodec(); codec.setConf(conf); } return codec; }
CompressionOption(CompressionType value, CompressionCodec codec) { this.value = value; this.codec = (CompressionType.NONE != value && null == codec) ? new DefaultCodec() : codec; } CompressionType getValue() {
@Override public void close() throws IOException { if (!closed) { try { super.close(); } finally { closed = true; } } }
/** * Return the number of leased {@link Compressor}s for this * {@link CompressionCodec} */ public static int getLeasedCompressorsCount(CompressionCodec codec) { return (codec == null) ? 0 : getLeaseCount(compressorCounts, codec.getCompressorType()); }
@Override public void close() throws IOException { if (!closed) { try { super.close(); } finally { closed = true; } } }
@Override public void write(int b) throws IOException { oneByte[0] = (byte)(b & 0xff); write(oneByte, 0, oneByte.length); }
@Override public void resetState() throws IOException { originalBlockSize = 0; noUncompressedBytes = 0; super.resetState(); }
@Override public int available() throws IOException { checkStream(); return (eof) ? 0 : 1; }
/** * Get the type of {@link Decompressor} needed by this {@link CompressionCodec}. * * @return the type of decompressor needed by this codec. */ @Override public Class<? extends Decompressor> getDecompressorType() { checkNativeCodeLoaded(); return SnappyDecompressor.class; }
@Override public CompressionInputStream createInputStream(InputStream in) throws IOException { return CompressionCodec.Util. createInputStreamWithCodecPool(this, conf, in); }
@Override public void flush() throws IOException { CompressionOutputStream cout = (CompressionOutputStream) out; cout.finish(); cout.flush(); cout.resetState(); } }