Class MemoryIndexStorage

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

public final class MemoryIndexStorage
extends java.lang.Object
implements IndexStorage
Eine IndexStorage-Implementierung, die die Werte im Speicher hält. Wird als Cache für einfügende Werte benutzt.
  • Constructor Summary

    Constructors
    Constructor Description
    MemoryIndexStorage​(int entryByteSize, int limit)
    Erzeugt eine Instanz
  • Method Summary

    Modifier and Type Method Description
    void deleteEntryAtIndex​(long entryIndex)
    Löscht den Eintrag am Index entryIndex
    int entryByteSize()
    Gibt die Byte-Größe eines Eintrags zurück
    void flush()  
    void flushTo​(IndexStorage other)
    Verschiebt alle Einträge in ein anderes IndexStorage-Objekt (also z.B. ein dateibasiertes).
    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.
    int maxNumEntries()
    Gibt die maximale Anzahl Einträge zurück
    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

    • MemoryIndexStorage

      public MemoryIndexStorage​(int entryByteSize, int limit)
      Erzeugt eine Instanz
      Parameters:
      entryByteSize - Bype-Länge einer Zeile
      limit - Maximale Anzahl Einträge
  • Method Details

    • getEntries

      public void getEntries​(long entryIndex, int numEntries, byte[] result, int destPos)
      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.
    • setEntries

      public void setEntries​(long entryIndex, int numEntries, byte[] data, int fromPos)
      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.
    • insertEntries

      public void insertEntries​(long entryIndex, int numEntries, byte[] data, int fromPos)
      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.
    • flushTo

      public void flushTo​(IndexStorage other) throws java.io.IOException
      Verschiebt alle Einträge in ein anderes IndexStorage-Objekt (also z.B. ein dateibasiertes). Danach ist dieses Objekt leer.
      Parameters:
      other - Objekt, dass die eigenen Einträge hinzugefügt bekommt
      Throws:
      java.io.IOException - Fehler ein Einfügen
      java.lang.IllegalArgumentException - Wenn der Parameter "this" ist.
    • flush

      public void flush()
      Specified by:
      flush in interface IndexStorage
    • numEntries

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

      public int maxNumEntries()
      Gibt die maximale Anzahl Einträge zurück
      Returns:
      Anzahl
    • 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)
      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
    • toString

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