BuiltInGzipDecompressor (Apache Hadoop Common 3.5.0 API)
Description: declaration: package: org.apache.hadoop.io.compress.zlib, class: BuiltInGzipDecompressor

Package org.apache.hadoop.io.compress.zlib

# Class BuiltInGzipDecompressor

java.lang.Object
org.apache.hadoop.io.compress.zlib.BuiltInGzipDecompressor

All Implemented Interfaces:
  `Decompressor`

@DoNotPool public class BuiltInGzipDecompressor extends Object implements Decompressor
A `Decompressor` based on the popular gzip compressed file format. http://www.gzip.org/

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static enum`
  `BuiltInGzipDecompressor.GzipStateLabel`
  The current state of the gzip decoder, external to the Inflater context.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `BuiltInGzipDecompressor()`
  Creates a new (pure Java) gzip decompressor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `decompress(byte[] b, int off, int len)`
  Decompress the data (gzip header, deflate stream, gzip trailer) in the provided buffer.
  `void`
  `end()`
  Closes the decompressor and discards any unprocessed input.
  `boolean`
  `finished()`
  Returns true if the end of the gzip substream (single "member") has been reached.
  `long`
  `getBytesRead()`
  Returns the total number of compressed bytes input so far, including gzip header/trailer bytes.
  `int`
  `getRemaining()`
  Returns the number of bytes remaining in the input buffer; normally called when finished() is true to determine amount of post-gzip-stream data.
  `boolean`
  `needsDictionary()`
  Returns `true` if a preset dictionary is needed for decompression.
  `boolean`
  `needsInput()`
  Returns `true` if the input data buffer is empty and `Decompressor.setInput(byte[], int, int)` should be called to provide more input.
  `void`
  `reset()`
  Resets everything, including the input buffer, regardless of whether the current gzip substream is finished.
  `void`
  `setDictionary(byte[] b, int off, int len)`
  Sets preset dictionary for compression.
  `void`
  `setInput(byte[] b, int off, int len)`
  Sets input data for decompression.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### BuiltInGzipDecompressor

    public BuiltInGzipDecompressor()
    Creates a new (pure Java) gzip decompressor.

- ## Method Details

  - ### needsInput

    public boolean needsInput()
    Description copied from interface: `Decompressor`
    Returns `true` if the input data buffer is empty and `Decompressor.setInput(byte[], int, int)` should be called to provide more input.
    Specified by:
      `needsInput` in interface `Decompressor`
    Returns:
      `true` if the input data buffer is empty and `Decompressor.setInput(byte[], int, int)` should be called in order to provide more input.

  - ### setInput

    public void setInput(byte[] b, int off, int len)
    Sets input data for decompression. This should be called if and only if `Decompressor.needsInput()` returns `true` indicating that more input data is required. (Both native and non-native versions of various Decompressors require that the data passed in via `b[]` remain unmodified until the caller is explicitly notified--via `Decompressor.needsInput()`--that the buffer may be safely modified. With this requirement, an extra buffer-copy can be avoided.)
    Specified by:
      `setInput` in interface `Decompressor`
    Parameters:
      `b` - Input data
      `off` - Start offset
      `len` - Length

  - ### decompress

    public int decompress(byte[] b, int off, int len) throws IOException
    Decompress the data (gzip header, deflate stream, gzip trailer) in the provided buffer.
    Specified by:
      `decompress` in interface `Decompressor`
    Parameters:
      `b` - Buffer for the uncompressed data
      `off` - Start offset of the data
      `len` - Size of the buffer
    Returns:
      the number of decompressed bytes placed into b
    Throws:
      `IOException` - raised on errors performing I/O.

  - ### getBytesRead

    public long getBytesRead()
    Returns the total number of compressed bytes input so far, including gzip header/trailer bytes.
    Returns:
      the total (non-negative) number of compressed bytes read so far

  - ### getRemaining

    public int getRemaining()
    Returns the number of bytes remaining in the input buffer; normally called when finished() is true to determine amount of post-gzip-stream data. Note that, other than the finished state with concatenated data after the end of the current gzip stream, this will never return a non-zero value unless called after `setInput(byte[] b, int off, int len)` and before `decompress(byte[] b, int off, int len)`. (That is, after `decompress(byte[] b, int off, int len)` it always returns zero, except in finished state with concatenated data.)
    Specified by:
      `getRemaining` in interface `Decompressor`
    Returns:
      the total (non-negative) number of unprocessed bytes in input

  - ### needsDictionary

    public boolean needsDictionary()
    Description copied from interface: `Decompressor`
    Returns `true` if a preset dictionary is needed for decompression.
    Specified by:
      `needsDictionary` in interface `Decompressor`
    Returns:
      `true` if a preset dictionary is needed for decompression

  - ### setDictionary

    public void setDictionary(byte[] b, int off, int len)
    Description copied from interface: `Decompressor`
    Sets preset dictionary for compression. A preset dictionary is used when the history buffer can be predetermined.
    Specified by:
      `setDictionary` in interface `Decompressor`
    Parameters:
      `b` - Dictionary data bytes
      `off` - Start offset
      `len` - Length

  - ### finished

    public boolean finished()
    Returns true if the end of the gzip substream (single "member") has been reached.
    Specified by:
      `finished` in interface `Decompressor`
    Returns:
      `true` if the end of the decompressed data output stream has been reached.

  - ### reset

    public void reset()
    Resets everything, including the input buffer, regardless of whether the current gzip substream is finished.
    Specified by:
      `reset` in interface `Decompressor`

  - ### end

    public void end()
    Description copied from interface: `Decompressor`
    Closes the decompressor and discards any unprocessed input.
    Specified by:
      `end` in interface `Decompressor`