Class FramedSnappyCompressorInputStream

    • Field Detail

      • MASK_OFFSET

        static final long MASK_OFFSET
        package private for tests only.
        See Also:
        Constant Field Values
      • STREAM_IDENTIFIER_TYPE

        private static final int STREAM_IDENTIFIER_TYPE
        See Also:
        Constant Field Values
      • UNCOMPRESSED_CHUNK_TYPE

        private static final int UNCOMPRESSED_CHUNK_TYPE
        See Also:
        Constant Field Values
      • SZ_SIGNATURE

        static final byte[] SZ_SIGNATURE
      • unreadBytes

        private long unreadBytes
      • in

        private final java.io.PushbackInputStream in
        The underlying stream to read compressed data from
      • oneByte

        private final byte[] oneByte
      • endReached

        private boolean endReached
      • inUncompressedChunk

        private boolean inUncompressedChunk
      • uncompressedBytesRemaining

        private int uncompressedBytesRemaining
      • expectedChecksum

        private long expectedChecksum
      • blockSize

        private final int blockSize
    • Constructor Detail

      • FramedSnappyCompressorInputStream

        public FramedSnappyCompressorInputStream​(java.io.InputStream in)
                                          throws java.io.IOException
        Constructs a new input stream that decompresses snappy-framed-compressed data from the specified input stream using the FramedSnappyDialect.STANDARD dialect.
        Parameters:
        in - the InputStream from which to read the compressed data
        Throws:
        java.io.IOException - if reading fails
      • FramedSnappyCompressorInputStream

        public FramedSnappyCompressorInputStream​(java.io.InputStream in,
                                                 FramedSnappyDialect dialect)
                                          throws java.io.IOException
        Constructs a new input stream that decompresses snappy-framed-compressed data from the specified input stream.
        Parameters:
        in - the InputStream from which to read the compressed data
        dialect - the dialect used by the compressed stream
        Throws:
        java.io.IOException - if reading fails
      • FramedSnappyCompressorInputStream

        public FramedSnappyCompressorInputStream​(java.io.InputStream in,
                                                 int blockSize,
                                                 FramedSnappyDialect dialect)
                                          throws java.io.IOException
        Constructs a new input stream that decompresses snappy-framed-compressed data from the specified input stream.
        Parameters:
        in - the InputStream from which to read the compressed data
        blockSize - the block size to use for the compressed stream
        dialect - the dialect used by the compressed stream
        Throws:
        java.io.IOException - if reading fails
        java.lang.IllegalArgumentException - if blockSize is not bigger than 0
        Since:
        1.14
    • Method Detail

      • read

        public int read()
                 throws java.io.IOException
        Specified by:
        read in class java.io.InputStream
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.InputStream
        Throws:
        java.io.IOException
      • read

        public int read​(byte[] b,
                        int off,
                        int len)
                 throws java.io.IOException
        Overrides:
        read in class java.io.InputStream
        Throws:
        java.io.IOException
      • available

        public int available()
                      throws java.io.IOException
        Overrides:
        available in class java.io.InputStream
        Throws:
        java.io.IOException
      • getCompressedCount

        public long getCompressedCount()
        Specified by:
        getCompressedCount in interface InputStreamStatistics
        Returns:
        the amount of raw or compressed bytes read by the stream
        Since:
        1.17
      • readOnce

        private int readOnce​(byte[] b,
                             int off,
                             int len)
                      throws java.io.IOException
        Read from the current chunk into the given array.
        Returns:
        -1 if there is no current chunk or the number of bytes read from the current chunk (which may be -1 if the end of the chunk is reached).
        Throws:
        java.io.IOException
      • readNextBlock

        private void readNextBlock()
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • readCrc

        private long readCrc()
                      throws java.io.IOException
        Throws:
        java.io.IOException
      • unmask

        static long unmask​(long x)
      • readSize

        private int readSize()
                      throws java.io.IOException
        Throws:
        java.io.IOException
      • skipBlock

        private void skipBlock()
                        throws java.io.IOException
        Throws:
        java.io.IOException
      • readStreamIdentifier

        private void readStreamIdentifier()
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • readOneByte

        private int readOneByte()
                         throws java.io.IOException
        Throws:
        java.io.IOException
      • verifyLastChecksumAndReset

        private void verifyLastChecksumAndReset()
                                         throws java.io.IOException
        Throws:
        java.io.IOException
      • matches

        public static boolean matches​(byte[] signature,
                                      int length)
        Checks if the signature matches what is expected for a .sz file.

        .sz files start with a chunk with tag 0xff and content sNaPpY.

        Parameters:
        signature - the bytes to check
        length - the number of bytes to check
        Returns:
        true if this is a .sz stream, false otherwise