Class BATBlock

  • All Implemented Interfaces:
    BlockWritable

    public class BATBlock
    extends Object
    A block of block allocation table entries. BATBlocks are created only through a static factory method: createBATBlocks.
    Author:
    Marc Johnson (mjohnson at apache dot org)
    • Method Detail

      • getBigBlockSize

        public int getBigBlockSize()
      • createBATBlocks

        public static BATBlock[] createBATBlocks​(int[] entries,
                                                 int size)
        Create an array of BATBlocks from an array of int block allocation table entries
        Parameters:
        entries - the array of int entries
        Returns:
        the newly created array of BATBlocks
      • createXBATBlocks

        public static BATBlock[] createXBATBlocks​(int[] entries,
                                                  int startBlock,
                                                  int size)
        Create an array of XBATBlocks from an array of int block allocation table entries
        Parameters:
        entries - the array of int entries
        startBlock - the start block of the array of XBAT blocks
        Returns:
        the newly created array of BATBlocks
      • calculateStorageRequirements

        public static int calculateStorageRequirements​(int entryCount,
                                                       int size)
        Calculate how many BATBlocks are needed to hold a specified number of BAT entries.
        Parameters:
        entryCount - the number of entries
        Returns:
        the number of BATBlocks needed
      • calculateXBATStorageRequirements

        public static int calculateXBATStorageRequirements​(int entryCount,
                                                           int size)
        Calculate how many XBATBlocks are needed to hold a specified number of BAT entries.
        Parameters:
        entryCount - the number of entries
        Returns:
        the number of XBATBlocks needed
      • entriesPerBlock

        public static final int entriesPerBlock​(int size)
        Returns:
        number of entries per block
      • entriesPerXBATBlock

        public static final int entriesPerXBATBlock​(int size)
        Returns:
        number of entries per XBAT block
      • getXBATChainOffset

        public static final int getXBATChainOffset​(int size)
        Returns:
        offset of chain index of XBAT block
      • doWriteData

        protected void doWriteData​(OutputStream stream,
                                   byte[] data)
                            throws IOException
        Default implementation of write for extending classes that contain their data in a simple array of bytes.
        Parameters:
        stream - the OutputStream to which the data should be written.
        data - the byte array of to be written.
        Throws:
        IOException - on problems writing to the specified stream.
      • writeBlocks

        public void writeBlocks​(OutputStream stream)
                         throws IOException
        Write the storage to an OutputStream
        Specified by:
        writeBlocks in interface BlockWritable
        Parameters:
        stream - the OutputStream to which the stored data should be written
        Throws:
        IOException - on problems writing to the specified stream