Class BufferedIndexStorage

java.lang.Object
de.bsvrz.ars.ars.persistence.index.backend.storage.BufferedIndexStorage
All Implemented Interfaces:
IndexStorage, AutoCloseable

public class BufferedIndexStorage extends Object implements IndexStorage, AutoCloseable
Puffert den lesenden Zugriff auf ein darunterliegendes FileIndexStorage
  • Constructor Details

    • BufferedIndexStorage

      public BufferedIndexStorage(FileIndexStorage delegate, int cacheSize)
      Erstellt ein neues BufferedIndexStorage
      Parameters:
      delegate - FileIndexStorage
      cacheSize - Größe des Puffers in Bytes
  • Method Details

    • getEntries

      public void getEntries(long entryIndex, int numEntries, byte[] result, int destPos) throws IOException
      Description copied from interface: IndexStorage
      Gibt Einträge aus dem Index zurück
      Specified by:
      getEntries in interface IndexStorage
      Parameters:
      entryIndex - Nullbasierte Position des ersten Eintrags, der angefragt werden soll. Gemeint ist hier die "Zeilennummer" im Index, nicht der byte-Offset
      numEntries - Anzahl Einträge, die angefragt werden sollen
      result - Byte-Array, in das das Ergebnis kopiert werden soll, muss mindestens destPos + (numEntries * IndexStorage.entryByteSize()) Bytes groß sein.
      destPos - Ziel-Position im Byte-Array. Standardmäßig 0.
      Throws:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • setEntries

      public void setEntries(long entryIndex, int numEntries, byte[] data, int fromPos) throws IOException
      Description copied from interface: IndexStorage
      Setzt Einträge im Index
      Specified by:
      setEntries in interface IndexStorage
      Parameters:
      entryIndex - Nullbasierte Position des ersten Eintrags, der gesetzt werden soll. Gemeint ist hier die "Zeilennummer" im Index, nicht der byte-Offset
      numEntries - Anzahl Einträge, die überschrieben werden sollen
      data - Byte-Array, aus dem die Daten kopiert werden sollen, muss mindestens fromPos + (numEntries * IndexStorage.entryByteSize()) Bytes groß sein.
      fromPos - Von-Position im Byte-Array. Standardmäßig 0.
      Throws:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • insertEntries

      public void insertEntries(long entryIndex, int numEntries, byte[] data, int fromPos) throws IOException
      Description copied from interface: IndexStorage
      Fügt Einträge im Index ein, anders als bei IndexStorage.setEntries(long, int, byte[]) werden die dort bestehenden Daten aber nicht überschrieben, sondern nach hinten geschoben.
      Specified by:
      insertEntries in interface IndexStorage
      Parameters:
      entryIndex - Nullbasierte Position an der Eingefügt werden soll (neuer Index des ersten eingefügten Eintrags). Gemeint ist hier die "Zeilennummer" im Index, nicht der byte-Offset
      numEntries - Anzahl Einträge, die eingefügt werden sollen
      data - Byte-Array, aus dem die Daten kopiert werden sollen, muss mindestens (numEntries * IndexStorage.entryByteSize()) Bytes groß sein.
      fromPos - Von-Position im Byte-Array. Standardmäßig 0.
      Throws:
      IOException - IO-Fehler (z. B. bei Dateizugriff)
    • numEntries

      public long numEntries() throws IOException
      Description copied from interface: IndexStorage
      Gibt die Anzahl Einträge zurück
      Specified by:
      numEntries in interface IndexStorage
      Returns:
      die Anzahl Einträge
      Throws:
      IOException
    • entryByteSize

      public int entryByteSize()
      Description copied from interface: IndexStorage
      Gibt die Byte-Größe eines Eintrags zurück
      Specified by:
      entryByteSize in interface IndexStorage
      Returns:
      die Byte-Größe eines Eintrags
    • deleteEntryAtIndex

      public void deleteEntryAtIndex(long entryIndex) throws IOException
      Description copied from interface: IndexStorage
      Löscht den Eintrag am Index entryIndex
      Specified by:
      deleteEntryAtIndex in interface IndexStorage
      Parameters:
      entryIndex - Index, der gelöscht werden soll
      Throws:
      IOException
    • flush

      public void flush() throws IOException
      Throws:
      IOException
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Throws:
      IOException
    • getBufferedCount

      public int getBufferedCount()
      Gibt zurück, wie viele Einträge im lesepuffer gespeichert sind
      Returns:
      Anzahl Einträge