Class ChannelInput

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, Input

    public class ChannelInput
    extends java.lang.Object
    implements Input
    The ChannelInput class takes a ReadableByteChannel object and wraps it as Input object acceptable by CryptoInputStream.
    • Field Detail

      • buf

        private java.nio.ByteBuffer buf
      • channel

        private final java.nio.channels.ReadableByteChannel channel
    • Constructor Detail

      • ChannelInput

        public ChannelInput​(java.nio.channels.ReadableByteChannel channel)
        Constructs the ChannelInput.
        Parameters:
        channel - the ReadableByteChannel object.
    • Method Detail

      • available

        public int available()
                      throws java.io.IOException
        Overrides the Input.available(). Returns an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking by the next invocation of a method for this input stream. The next invocation might be the same thread or another thread. A single read or skip of this many bytes will not block, but may read or skip fewer bytes.
        Specified by:
        available in interface Input
        Returns:
        an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking or 0 when it reaches the end of the input stream.
        Throws:
        java.io.IOException - if an I/O error occurs.
      • close

        public void close()
                   throws java.io.IOException
        Overrides the Input.seek(long). Closes this input and releases any system resources associated with the under layer input.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface Input
        Throws:
        java.io.IOException - if an I/O error occurs.
      • getSkipBuf

        private java.nio.ByteBuffer getSkipBuf()
        Gets the skip buffer.
        Returns:
        the buffer.
      • read

        public int read​(java.nio.ByteBuffer dst)
                 throws java.io.IOException
        Overrides the Input.read(ByteBuffer). Reads a sequence of bytes from input into the given buffer.
        Specified by:
        read in interface Input
        Parameters:
        dst - The buffer into which bytes are to be transferred.
        Returns:
        the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached.
        Throws:
        java.io.IOException - if an I/O error occurs.
      • read

        public int read​(long position,
                        byte[] buffer,
                        int offset,
                        int length)
                 throws java.io.IOException
        Overrides the Input.read(long, byte[], int, int) . Reads up to len bytes of data from the input stream into an array of bytes. An attempt is made to read as many as len bytes, but a smaller number may be read. The number of bytes actually read is returned as an integer.
        Specified by:
        read in interface Input
        Parameters:
        position - the given position within a stream.
        buffer - the buffer into which the data is read.
        offset - the start offset in array buffer.
        length - the maximum number of bytes to read.
        Returns:
        the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached.
        Throws:
        java.io.IOException - if an I/O error occurs.
      • seek

        public void seek​(long position)
                  throws java.io.IOException
        Overrides the Input.seek(long). Seeks to the given offset from the start of the stream. The next read() will be from that location.
        Specified by:
        seek in interface Input
        Parameters:
        position - the offset from the start of the stream.
        Throws:
        java.io.IOException - if an I/O error occurs.
      • skip

        public long skip​(long n)
                  throws java.io.IOException
        Overrides the Input.skip(long). Skips over and discards n bytes of data from this input stream.
        Specified by:
        skip in interface Input
        Parameters:
        n - the number of bytes to be skipped.
        Returns:
        the actual number of bytes skipped.
        Throws:
        java.io.IOException - if an I/O error occurs.