org.apache.hadoop.io.compress.zlib
Class ZlibDecompressor

java.lang.Object
  extended by org.apache.hadoop.io.compress.zlib.ZlibDecompressor
All Implemented Interfaces:
Decompressor

public class ZlibDecompressor
extends Object
implements Decompressor

A Decompressor based on the popular zlib compression algorithm. http://www.zlib.net/


Nested Class Summary
static class ZlibDecompressor.CompressionHeader
          The headers to detect from compressed data.
 
Constructor Summary
ZlibDecompressor()
           
ZlibDecompressor(ZlibDecompressor.CompressionHeader header, int directBufferSize)
          Creates a new decompressor.
 
Method Summary
 int decompress(byte[] b, int off, int len)
          Fills specified buffer with uncompressed data.
 void end()
          Closes the decompressor and discards any unprocessed input.
protected  void finalize()
           
 boolean finished()
          Returns true if the end of the decompressed data output stream has been reached.
 long getBytesRead()
          Returns the total number of compressed bytes input so far.
 long getBytesWritten()
          Returns the total number of uncompressed bytes output so far.
 int getRemaining()
          Returns the number of bytes remaining in the input buffers; 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 buffers (user and direct).
 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, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ZlibDecompressor

public ZlibDecompressor(ZlibDecompressor.CompressionHeader header,
                        int directBufferSize)
Creates a new decompressor.


ZlibDecompressor

public ZlibDecompressor()
Method Detail

setInput

public void setInput(byte[] b,
                     int off,
                     int len)
Description copied from interface: Decompressor
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

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

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.

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

finished

public boolean finished()
Description copied from interface: Decompressor
Returns true if the end of the decompressed data output stream has been reached.

Specified by:
finished in interface Decompressor
Returns:
true if the end of the decompressed data output stream has been reached.

decompress

public int decompress(byte[] b,
                      int off,
                      int len)
               throws IOException
Description copied from interface: Decompressor
Fills specified buffer with uncompressed data. Returns actual number of bytes of uncompressed data. A return value of 0 indicates that Decompressor.needsInput() should be called in order to determine if more input data is required.

Specified by:
decompress in interface Decompressor
Parameters:
b - Buffer for the compressed data
off - Start offset of the data
len - Size of the buffer
Returns:
The actual number of bytes of compressed data.
Throws:
IOException

getBytesWritten

public long getBytesWritten()
Returns the total number of uncompressed bytes output so far.

Returns:
the total (non-negative) number of uncompressed bytes output so far

getBytesRead

public long getBytesRead()
Returns the total number of compressed bytes input so far.

Returns:
the total (non-negative) number of compressed bytes input so far

getRemaining

public int getRemaining()
Returns the number of bytes remaining in the input buffers; normally called when finished() is true to determine amount of post-gzip-stream data.

Specified by:
getRemaining in interface Decompressor
Returns:
the total (non-negative) number of unprocessed bytes in input

reset

public void reset()
Resets everything including the input buffers (user and direct).

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

finalize

protected void finalize()
Overrides:
finalize in class Object


Copyright © 2009 The Apache Software Foundation