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 voiddeleteEntryAtIndex(long entryIndex)Löscht den Eintrag am Index entryIndexintentryByteSize()Gibt die Byte-Größe eines Eintrags zurückvoidflush()voidflushTo(IndexStorage other)Verschiebt alle Einträge in ein anderesIndexStorage-Objekt (also z.B. ein dateibasiertes).voidgetEntries(long entryIndex, int numEntries, byte[] result, int destPos)Gibt Einträge aus dem Index zurückvoidinsertEntries(long entryIndex, int numEntries, byte[] data, int fromPos)Fügt Einträge im Index ein, anders als beiIndexStorage.setEntries(long, int, byte[])werden die dort bestehenden Daten aber nicht überschrieben, sondern nach hinten geschoben.intmaxNumEntries()Gibt die maximale Anzahl Einträge zurücklongnumEntries()Gibt die Anzahl Einträge zurückvoidsetEntries(long entryIndex, int numEntries, byte[] data, int fromPos)Setzt Einträge im Indexjava.lang.StringtoString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods 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 Zeilelimit- Maximale Anzahl Einträge
-
-
Method Details
-
getEntries
public void getEntries(long entryIndex, int numEntries, byte[] result, int destPos)Description copied from interface:IndexStorageGibt Einträge aus dem Index zurück- Specified by:
getEntriesin interfaceIndexStorage- Parameters:
entryIndex- Nullbasierte Position des ersten Eintrags, der angefragt werden soll. Gemeint ist hier die "Zeilennummer" im Index, nicht der byte-OffsetnumEntries- Anzahl Einträge, die angefragt werden sollenresult- 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:IndexStorageSetzt Einträge im Index- Specified by:
setEntriesin interfaceIndexStorage- Parameters:
entryIndex- Nullbasierte Position des ersten Eintrags, der gesetzt werden soll. Gemeint ist hier die "Zeilennummer" im Index, nicht der byte-OffsetnumEntries- Anzahl Einträge, die überschrieben werden sollendata- 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:IndexStorageFügt Einträge im Index ein, anders als beiIndexStorage.setEntries(long, int, byte[])werden die dort bestehenden Daten aber nicht überschrieben, sondern nach hinten geschoben.- Specified by:
insertEntriesin interfaceIndexStorage- 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-OffsetnumEntries- Anzahl Einträge, die eingefügt werden sollendata- 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
Verschiebt alle Einträge in ein anderesIndexStorage-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ügenjava.lang.IllegalArgumentException- Wenn der Parameter "this" ist.
-
flush
public void flush()- Specified by:
flushin interfaceIndexStorage
-
numEntries
public long numEntries()Description copied from interface:IndexStorageGibt die Anzahl Einträge zurück- Specified by:
numEntriesin interfaceIndexStorage- 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:IndexStorageGibt die Byte-Größe eines Eintrags zurück- Specified by:
entryByteSizein interfaceIndexStorage- Returns:
- die Byte-Größe eines Eintrags
-
deleteEntryAtIndex
public void deleteEntryAtIndex(long entryIndex)Description copied from interface:IndexStorageLöscht den Eintrag am Index entryIndex- Specified by:
deleteEntryAtIndexin interfaceIndexStorage- Parameters:
entryIndex- Index, der gelöscht werden soll
-
toString
public java.lang.String toString()- Overrides:
toStringin classjava.lang.Object
-