Class BufferedIndexStorage

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

public class BufferedIndexStorage
extends java.lang.Object
implements IndexStorage, java.lang.AutoCloseable
Puffert den lesenden Zugriff auf ein darunterliegendes FileIndexStorage
  • Constructor Summary

    Constructors
    Constructor Description
    BufferedIndexStorage​(FileIndexStorage delegate, int cacheSize)
    Erstellt ein neues BufferedIndexStorage
  • Method Summary

    Modifier and Type Method Description
    void close()  
    void deleteEntryAtIndex​(long entryIndex)
    Löscht den Eintrag am Index entryIndex
    int entryByteSize()
    Gibt die Byte-Größe eines Eintrags zurück
    void flush()  
    int getBufferedCount()
    Gibt zurück, wie viele Einträge im lesepuffer gespeichert sind
    void getEntries​(long entryIndex, int numEntries, byte[] result, int destPos)
    Gibt Einträge aus dem Index zurück
    void insertEntries​(long entryIndex, int numEntries, byte[] data, int fromPos)
    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.
    long numEntries()
    Gibt die Anzahl Einträge zurück
    void setEntries​(long entryIndex, int numEntries, byte[] data, int fromPos)
    Setzt Einträge im Index
    java.lang.String toString()  

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface de.bsvrz.ars.ars.persistence.index.backend.storage.IndexStorage

    addLast, addLast, getAll, getEntries, getFirst, getLast, insertEntries, setEntries, setLast
  • 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 java.io.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:
      java.io.IOException - IO-Fehler (z. B. bei Dateizugriff)
    • setEntries

      public void setEntries​(long entryIndex, int numEntries, byte[] data, int fromPos) throws java.io.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:
      java.io.IOException - IO-Fehler (z. B. bei Dateizugriff)
    • insertEntries

      public void insertEntries​(long entryIndex, int numEntries, byte[] data, int fromPos) throws java.io.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:
      java.io.IOException - IO-Fehler (z. B. bei Dateizugriff)
    • numEntries

      public long numEntries() throws java.io.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:
      java.io.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 java.io.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:
      java.io.IOException
    • flush

      public void flush() throws java.io.IOException
      Specified by:
      flush in interface IndexStorage
      Throws:
      java.io.IOException
    • toString

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

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

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