Klasse HybridStorage
java.lang.Object
de.bsvrz.ars.ars.persistence.index.backend.storage.HybridStorage
- Alle implementierten Schnittstellen:
IndexStorage
,AutoCloseable
Eine
IndexStorage
-Implementierung, die einen Puffer für neu angelegte Objekte im Speicher hält und gleichzeitig auf eine Datei verweist.
Läuft der RAM-Puffer über, werden die Einträge an die Datei angehängt.
Beim Lesen wird die Datei und der RAM-Puffer wie ein zusammenhängender Speicherbereich angesprochen.
-
Konstruktorübersicht
KonstruktorenKonstruktorBeschreibungHybridStorage
(int entryByteSize, int memoryLimit, Path file) Erzeugt eine neue Instanz -
Methodenübersicht
Modifizierer und TypMethodeBeschreibungvoid
close()
void
deleteEntryAtIndex
(long entryIndex) Löscht den Eintrag am Index entryIndexint
Gibt die Byte-Größe eines Eintrags zurücklong
Gibt den Index des ersten Eintrags im Speicher zurück, bzw. die Anzahl der in der datei gespeicherten Einträgevoid
flush()
Schreibt alle Änderungen in das Dateisystemvoid
getEntries
(long entryIndex, int numEntries, byte[] result, int destPos) Gibt Einträge aus dem Index zurückgetFile()
Gibt die Datei zurückvoid
insertEntries
(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.int
Gibt die aktuelle Anzahl der im Speicher gepufferten Einträge zurücklong
Gibt die Anzahl Einträge zurückvoid
setEntries
(long entryIndex, int numEntries, byte[] data, int fromPos) Setzt Einträge im IndextoString()
Von Klasse geerbte Methoden java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Von Schnittstelle geerbte Methoden de.bsvrz.ars.ars.persistence.index.backend.storage.IndexStorage
addLast, addLast, getAll, getEntries, getFirst, getLast, insertEntries, setEntries
-
Konstruktordetails
-
HybridStorage
Erzeugt eine neue Instanz- Parameter:
entryByteSize
- Byte-Größe eines EintragsmemoryLimit
- Maximale Anzahl Einträge, die im Speicher gehalten werdenfile
- Datei, in die die Einträge geschrieben werden sollen (in der Regel != null, außer für bestimmte Tests)- Löst aus:
IOException
- IO-Fehler beim Lesen
-
-
Methodendetails
-
getEntries
public void getEntries(long entryIndex, int numEntries, byte[] result, int destPos) throws IOException Beschreibung aus Schnittstelle kopiert:IndexStorage
Gibt Einträge aus dem Index zurück- Angegeben von:
getEntries
in SchnittstelleIndexStorage
- Parameter:
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.- Löst aus:
IOException
- IO-Fehler (z. B. bei Dateizugriff)
-
setEntries
public void setEntries(long entryIndex, int numEntries, byte[] data, int fromPos) throws IOException Beschreibung aus Schnittstelle kopiert:IndexStorage
Setzt Einträge im Index- Angegeben von:
setEntries
in SchnittstelleIndexStorage
- Parameter:
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.- Löst aus:
IOException
- IO-Fehler (z. B. bei Dateizugriff)
-
insertEntries
public void insertEntries(long entryIndex, int numEntries, byte[] data, int fromPos) throws IOException Beschreibung aus Schnittstelle kopiert:IndexStorage
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.- Angegeben von:
insertEntries
in SchnittstelleIndexStorage
- Parameter:
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.- Löst aus:
IOException
- IO-Fehler (z. B. bei Dateizugriff)
-
getFile
Gibt die Datei zurück- Gibt zurück:
- die Datei
-
numEntries
public long numEntries()Beschreibung aus Schnittstelle kopiert:IndexStorage
Gibt die Anzahl Einträge zurück- Angegeben von:
numEntries
in SchnittstelleIndexStorage
- Gibt zurück:
- die Anzahl Einträge
-
firstMemoryIndex
public long firstMemoryIndex()Gibt den Index des ersten Eintrags im Speicher zurück, bzw. die Anzahl der in der datei gespeicherten Einträge- Gibt zurück:
- den Index des ersten Eintrags im Speicher
-
memoryEntries
public int memoryEntries()Gibt die aktuelle Anzahl der im Speicher gepufferten Einträge zurück- Gibt zurück:
- aktuelle Anzahl Einträge
-
entryByteSize
public int entryByteSize()Beschreibung aus Schnittstelle kopiert:IndexStorage
Gibt die Byte-Größe eines Eintrags zurück- Angegeben von:
entryByteSize
in SchnittstelleIndexStorage
- Gibt zurück:
- die Byte-Größe eines Eintrags
-
toString
-
close
- Angegeben von:
close
in SchnittstelleAutoCloseable
- Löst aus:
IOException
-
deleteEntryAtIndex
Beschreibung aus Schnittstelle kopiert:IndexStorage
Löscht den Eintrag am Index entryIndex- Angegeben von:
deleteEntryAtIndex
in SchnittstelleIndexStorage
- Parameter:
entryIndex
- Index, der gelöscht werden soll- Löst aus:
IOException
-
flush
Schreibt alle Änderungen in das Dateisystem- Löst aus:
IOException
- Fehler beim Schreiben
-