Class ChecksumValidatingInputStream

  • All Implemented Interfaces:
    Closeable, AutoCloseable, Abortable

    public class ChecksumValidatingInputStream
    extends InputStream
    implements Abortable
    Stream that will update the Checksum as the data is read. When end of the stream is reached the computed Checksum is validated with Expected checksum.
    • Constructor Detail

      • ChecksumValidatingInputStream

        public ChecksumValidatingInputStream​(InputStream inputStream,
                                             SdkChecksum sdkChecksum,
                                             String expectedChecksum)
        Creates an input stream using the specified Checksum, input stream, and length.
        Parameters:
        inputStream - the input stream
        sdkChecksum - the Checksum implementation
        expectedChecksum - the checksum value as seen un .
    • Method Detail

      • read

        public int read()
                 throws IOException
        Reads from the underlying stream. If the end of the stream is reached, the running checksum will be appended a byte at a time (1 per read call).
        Specified by:
        read in class InputStream
        Returns:
        byte read, if eos has been reached, -1 will be returned.
        Throws:
        IOException
      • read

        public int read​(byte[] buf,
                        int off,
                        int len)
                 throws IOException
        Reads up to len bytes at a time from the input stream, updates the checksum. If the end of the stream has been reached the checksum will be appended to the last 4 bytes.
        Overrides:
        read in class InputStream
        Parameters:
        buf - buffer to write into
        off - offset in the buffer to write to
        len - maximum number of bytes to attempt to read.
        Returns:
        number of bytes written into buf, otherwise -1 will be returned to indicate eos.
        Throws:
        IOException
      • abort

        public void abort()
        Specified by:
        abort in interface Abortable