Class BlockSource

  • All Implemented Interfaces:
    AutoCloseable

    public abstract class BlockSource
    extends Object
    implements AutoCloseable
    Provides content blocks of file.

    BlockSource implementations must decide if they will be thread-safe, or not.

    • Constructor Detail

      • BlockSource

        public BlockSource()
    • Method Detail

      • from

        public static BlockSource from​(byte[] content)
        Wrap a byte array as a BlockSource.
        Parameters:
        content - input file.
        Returns:
        block source to read from content.
      • from

        public static BlockSource from​(FileInputStream in)
        Read from a FileInputStream.

        The returned BlockSource is not thread-safe, as it must seek the file channel to read a block.

        Parameters:
        in - the file. The BlockSource will close in.
        Returns:
        wrapper for in.
      • from

        public static BlockSource from​(FileChannel ch)
        Read from a FileChannel.

        The returned BlockSource is not thread-safe, as it must seek the file channel to read a block.

        Parameters:
        ch - the file. The BlockSource will close ch.
        Returns:
        wrapper for ch.
      • read

        public abstract ByteBuffer read​(long position,
                                        int blockSize)
                                 throws IOException
        Read a block from the file.

        To reduce copying, the returned ByteBuffer should have an accessible array and arrayOffset() == 0. The caller will discard the ByteBuffer and directly use the backing array.

        Parameters:
        position - position of the block in the file, specified in bytes from the beginning of the file.
        blockSize - size to read.
        Returns:
        buffer containing the block content.
        Throws:
        IOException - if block cannot be read.
      • size

        public abstract long size()
                           throws IOException
        Determine the size of the file.
        Returns:
        total number of bytes in the file.
        Throws:
        IOException - if size cannot be obtained.
      • adviseSequentialRead

        public void adviseSequentialRead​(long startPos,
                                         long endPos)
        Advise the BlockSource a sequential scan is starting.
        Parameters:
        startPos - starting position.
        endPos - ending position.