java.lang.Object
org.eclipse.rdf4j.sail.nativerdf.datastore.IDFile
All Implemented Interfaces:
Closeable, AutoCloseable

public class IDFile extends Object implements Closeable
Class supplying access to an ID file. An ID file maps IDs (integers >= 1) to file pointers (long integers). There is a direct correlation between IDs and the position at which the file pointers are stored; the file pointer for ID X is stored at position 8*X.

This class supports parallel reads but not parallel writes.

Author:
Arjohn Kampman
  • Constructor Summary

    Constructors
    Constructor
    Description
    IDFile(File file)
     
    IDFile(File file, boolean forceSync)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Discards all stored data.
    void
     
    void
    Closes the ID file, releasing any file locks that it might have.
    final File
     
    int
    Gets the largest ID that is stored in this ID file.
    long
    getOffset(int id)
    Gets the offset of the data entry with the specified ID.
    void
    setOffset(int id, long offset)
    Sets or updates the stored offset for the specified ID.
    int
    storeOffset(long offset)
    Stores the offset of a new data entry, returning the ID under which is stored.
    void
    Syncs any unstored data to the hash file.
    void
    sync(boolean force)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

  • Method Details

    • getFile

      public final File getFile()
    • getMaxID

      public int getMaxID() throws IOException
      Gets the largest ID that is stored in this ID file.
      Returns:
      The largest ID, or 0 if the file does not contain any data.
      Throws:
      IOException - If an I/O error occurs.
    • storeOffset

      public int storeOffset(long offset) throws IOException
      Stores the offset of a new data entry, returning the ID under which is stored.
      Throws:
      IOException
    • setOffset

      public void setOffset(int id, long offset) throws IOException
      Sets or updates the stored offset for the specified ID.
      Parameters:
      id - The ID to set the offset for, must be larger than 0.
      offset - The (new) offset for the specified ID.
      Throws:
      IOException
    • getOffset

      public long getOffset(int id) throws IOException
      Gets the offset of the data entry with the specified ID.
      Parameters:
      id - The ID to get the offset for, must be larger than 0.
      Returns:
      The offset for the ID.
      Throws:
      IOException
    • clear

      public void clear() throws IOException
      Discards all stored data.
      Throws:
      IOException - If an I/O error occurred.
    • sync

      public void sync() throws IOException
      Syncs any unstored data to the hash file.
      Throws:
      IOException
    • sync

      public void sync(boolean force) throws IOException
      Throws:
      IOException
    • close

      public void close() throws IOException
      Closes the ID file, releasing any file locks that it might have.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException
    • clearCache

      public void clearCache()