Package de.bsvrz.ars.ars.persistence
Class CacheManager
java.lang.Object
de.bsvrz.ars.ars.persistence.CacheManager
public class CacheManager
extends java.lang.Object
Diese Klasse implementiert die Verwaltung der Caches für die Schreibzugriffe auf Containerdateien. Die Klasse ist als Singleton realisiert, weil es im
Original-Archivsystem keine zentrale Stelle zum Zugriff auf Container-Dateien gibt (der PersistenzManager war wohl dafür vorgesehen, allerdings gibt es auch
einige Zugriffe auf Containerdateien, die am PersistenzManager vorbei gehen). Vor dem Zugriff auf Containerdateien muss die Cache-Verwaltung mit der Methode
init()
erzeugt und initialisiert werden. Beim Beenden des Archivsystems muss mit einem Aufruf der Methode close
das Schreiben der
noch in den einzelnen Caches vorhandenen Daten veranlasst werden.-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
CacheManager.Cache
Realisiert den Zwischenspeicher für eine Containerdatei.static class
CacheManager.CacheMemoryUsage
-
Method Summary
Modifier and Type Method Description void
close()
Schreibt alle in den einzelnen Caches vorhandenen Daten und schließt die Cache-Verwaltung.CacheManager.Cache
createCache(ContainerFile cont, boolean createFile)
Erzeugt einen neuen Cache für den angegebenen Container.void
flushAll()
Schreibt alle in den einzelnen Caches vorhandenen Daten.void
forgetCache(long containerId)
Entfernt den Cache des angegebenen Containers aus der Containerverwaltung.void
forgetCache(ContainerFile containerFile)
Entfernt den Cache des angegebenen Containers aus der Containerverwaltung.CacheManager.Cache
getCache(long containerId)
Liefert den Cache für den angegebenen Container zurück.CacheManager.Cache
getCache(ContainerFile containerFile)
Liefert den Cache für den angegebenen Container zurück.CacheManager.CacheMemoryUsage
getCachedMemory()
Gibt den vom Cache verbrauchten Speicher zurück (ungefähr)long[]
getCounts()
Liefert ein Array mit folgenden statistischen Informationen:static CacheManager
getInstance()
long
getWrittenBytes()
void
init(de.bsvrz.sys.funclib.commandLineArgs.ArgumentList argumentList)
Initialisiert den CacheManager.boolean
isCacheEnabled()
void
resetCounts()
Setzt die Statistiken zu den geschriebenen Puffern auf 0 zurückvoid
setCacheEnabled(boolean cacheEnabled)
void
setCachingEnabled(long objectId, long atgId, long aspectId, int simulationVariant, boolean enable)
Mit dieser Methode kann die Zwischenspeicherung für eine angegebene Datenidentifikation ein- bzw. ausgeschaltet werden.void
updateCounts()
Aktualisiert die Statistiken zu den geschriebenen PuffernMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Method Details
-
getInstance
- Returns:
- Liefert das CacheManager-Objekt zurück.
-
init
public void init(de.bsvrz.sys.funclib.commandLineArgs.ArgumentList argumentList)Initialisiert den CacheManager. Das Aufrufargument -cachePufferGröße=..., mit dem die Größe des Puffers pro Cache eingestellt werden kann, wird gelesen.- Parameters:
argumentList
- Aufrufargumente der Applikation
-
close
public void close()Schreibt alle in den einzelnen Caches vorhandenen Daten und schließt die Cache-Verwaltung. Vor einer erneuten Verwendung muss die Cache-Verwaltung mit einem erneuten Aufruf der Methodeinit
initialisiert werden. -
flushAll
public void flushAll()Schreibt alle in den einzelnen Caches vorhandenen Daten. -
getCachedMemory
Gibt den vom Cache verbrauchten Speicher zurück (ungefähr)- Returns:
- Speicherverbrauch in bytes
-
updateCounts
public void updateCounts()Aktualisiert die Statistiken zu den geschriebenen Puffern -
resetCounts
public void resetCounts()Setzt die Statistiken zu den geschriebenen Puffern auf 0 zurück -
getCache
Liefert den Cache für den angegebenen Container zurück.- Parameters:
containerFile
- Container, dessen Cache bestimmt werden soll- Returns:
- Cache des Containers oder
null
, wenn der Container keinen Cache hat.
-
getCache
Liefert den Cache für den angegebenen Container zurück.- Parameters:
containerId
- Container, dessen Cache bestimmt werden soll- Returns:
- Cache des Containers oder
null
, wenn der Container keinen Cache hat.
-
createCache
Erzeugt einen neuen Cache für den angegebenen Container.- Parameters:
cont
- Container für den ein neuer Cache erzeugt werden soll.createFile
-true
, falls eine neue Datei erzeugt werden soll;false
, falls zu einer vorhandenen Datei hinzugefügt werden soll.- Returns:
- Neuer Cache oder
null
, falls die Datenidentifikation des Containers nicht gecacht werden soll..
-
forgetCache
Entfernt den Cache des angegebenen Containers aus der Containerverwaltung. Eventuell noch im Cache befindliche Daten werden nicht automatisch geschrieben, sondern müssen vorher durch einen expliziten Aufruf der MethodeCacheManager.Cache.flush()
geschrieben werden.- Parameters:
containerFile
- Container dessen Cache aus der Verwaltung entfernt werden soll.
-
forgetCache
public void forgetCache(long containerId)Entfernt den Cache des angegebenen Containers aus der Containerverwaltung. Eventuell noch im Cache befindliche Daten werden nicht automatisch geschrieben, sondern müssen vorher durch einen expliziten Aufruf der MethodeCacheManager.Cache.flush()
geschrieben werden.- Parameters:
containerId
- ID des Containers dessen Cache aus der Verwaltung entfernt werden soll.
-
getCounts
public long[] getCounts()Liefert ein Array mit folgenden statistischen Informationen:Gesamtanzahl von Datei-Schreibvorgängen aller geschlossenen Cache-Objekte.
Gesamtanzahl von verarbeiteten Datenblöcken aller geschlossenen Cache-Objekte.
Gesamtanzahl von zwischengespeicherten Datenblöcken aller geschlossenen Cache-Objekte.
Gesamtanzahl von nicht zwischengespeicherten Datenblöcken aller geschlossenen Cache-Objekte.
- Returns:
- Array mit statistischen Informationen
-
setCachingEnabled
public void setCachingEnabled(long objectId, long atgId, long aspectId, int simulationVariant, boolean enable)Mit dieser Methode kann die Zwischenspeicherung für eine angegebene Datenidentifikation ein- bzw. ausgeschaltet werden.- Parameters:
objectId
- Objekt-ID der Datenidentifikation.atgId
- ID der Attribugruppe der Datenidentifikation.aspectId
- ID des Aspekts der Datenidentifikation.simulationVariant
- Simulationsvariante der Datenidentifikation.enable
-true
, wenn die Zwischenspeicherung eingeschaltetwerden soll;false
, wenn die Zwischenspeicherung ausgeschaltet werden soll.
-
isCacheEnabled
public boolean isCacheEnabled() -
setCacheEnabled
public void setCacheEnabled(boolean cacheEnabled) -
getWrittenBytes
public long getWrittenBytes()
-