|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.ObjectAMETAS.util.cache.Cache
Diese Klasse implementiert die Funktionalität eines
Caches. Cacheable-Objekte, die in einem solchen Cache
gespeichert werden, werden nach bestimmten Metriken in einen
persistenten Speicher ausgelagert, bzw. bei Gebrauch wieder
eingelagert. Diese Metriken werden durch die
Cacheable-Objekte, bzw. deren Implementierer
bestimmt. Der Cache ist mit einem
PersistentStorage-Objekt assoziiert, das den
Hintergrundspeicher kapselt. Hierbei sind verschiedenste
Implementierungen von PersistentStorage-Klassen
denkbar. Beispielsweise könnte eine solche Klasse die Objekte in
einer SQL-Datenbank ablegen oder einfach auf Platte schreiben.
Ein Objekt kann sich in folgenden Zuständen befinden:
cleanup() bei nächster Gelegenheit in
den Hintergrundspeicher geschrieben.isSwapable() == true). Bei einem
folgenden cleanup wird es bei Bedarf zurück in den
Hintergrundspeicher geschrieben und dann aus dem Cache
entfernt. Ein Cache besitzt keinen eigenen Kontrollfluß, der für das Aufräumen zuständig ist. Dies ist von dem Programm durchzuführen, das die Cache-Klassen verwendet.
| Field Summary | |
protected boolean |
m_bWriteThrough
Gibt an, ob jedes Ablegen im Cache zu einer Speicherung im persistenten Speicher führen soll. |
protected java.util.Hashtable |
m_htbCachedObjects
Speichert die gecacheten Objekte. |
protected int |
m_nHits
Gesamtzahl der angefragten Objekte, die im Cache gefunden wurden. |
protected int |
m_nMisses
Gesamtzahl der angefragten Objekte, die nicht im Cache gefunden wurden und nachgeladen werden mußten. |
protected int |
m_nNotFound
Gesamtzahl der angefragten Objekte, die weder im Cache noch im Hintergrundspeicher gefunden wurden. |
protected PersistentStorage |
m_psStorage
Der persistente Speicher, der für die Auslagerung verwendet wird. |
| Constructor Summary | |
Cache(PersistentStorage psStorage)
Konstruktor. |
|
| Method Summary | |
void |
cache(Cacheable cch)
Nimmt ein neues Objekt in der Cache auf. |
void |
cleanup()
Räumt diesen Cache auf. |
void |
clear()
Löscht alle Objekte aus dem Cache. |
void |
clearPersistently()
Löscht alle Objekte aus dem Cache und dem Hintergrundspeicher. |
void |
discard(java.lang.String sName)
Verwirft das Objekt mit dem Namen sName. |
Cacheable |
get(java.lang.String sName)
Liefert ein Objekt aus dem Cache zurück. |
Cacheable[] |
getAllCachedObjects()
Liefert alle im Cache befindlichen Objekte in einem Array zurück. |
double |
getCacheRatio()
Liefert der Anteil der im Cache befindlichen Objekte bezogen auf die Zahl aller gespeicherten Objekte. |
int |
getFaults()
Liefert die Zahl aller nicht gefundenen und nachgeladenen Objekte seit dem letzten Reset zurück. |
int |
getHits()
Liefert die Zahl der Cache-Hits seit dem letzten Reset zurück. |
int |
getMisses()
Liefert die Zahl der Cache-Misses seit dem letzten Reset zurück. |
int |
getNotFound()
Liefert die Zahl der nicht gefundenen Objekte seit dem letzten Reset zurück. |
int |
getSize()
Liefert die Anzahl der im Cache befindlichen Objekte zurück. |
java.lang.String |
getStatsString()
Liefert eine Zusammenfassung der Cache-Statistik in einem String. |
int |
getStorageSize()
Liefert die Anzahl der Objekte im Hintergrundspeicher zurück. |
void |
remove(java.lang.String sName)
Entfernt das Objekt mit dem Namen sName aus dem
Cache. |
void |
removePersistently(java.lang.String sName)
Entfernt das Objekt mit dem Namen sName aus dem
Cache. |
void |
resetStats()
Setzt die statistisch erfaßten Werte zurück. |
void |
setDebug(boolean b)
Schaltet die Augabe von Debug-Meldungen ein und aus. |
void |
setModified(Cacheable cch)
Gibt dem Cache bekannt, daß das übergebene Cacheable-Objekt verändert wurde. |
void |
setWriteThrough(boolean b)
Setzt das WriteThrough-Flag. |
void |
write()
Schreibt alle schmutzigen Objekte in den persistenten Speicher und stellt so die Konsistenz her. |
void |
writeAll()
Schreibt alle Objekte, ob schmutzig oder nicht, in den persistenten Speicher und stellt so die Konsistenz her. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
protected PersistentStorage m_psStorage
protected java.util.Hashtable m_htbCachedObjects
protected boolean m_bWriteThrough
protected int m_nMisses
protected int m_nHits
protected int m_nNotFound
| Constructor Detail |
public Cache(PersistentStorage psStorage)
psStorage - ein PersistentStorage-Objekt,
das als Hintergrundspeicher verwendet werden soll.| Method Detail |
public void setDebug(boolean b)
b - true wenn Debug-Ausgaben gemacht werden
sollen, false sonst.public int getSize()
public int getStorageSize()
public double getCacheRatio()
public void cleanup()
throws java.io.IOException
java.io.IOException - wenn beim Schreiben eines Objektes in
den Hintergrundspeicher ein I/O-Fehler auftritt.
public void write()
throws java.io.IOException
java.io.IOException - wenn beim Schreiben eines Objektes in
den Hintergrundspeicher ein I/O-Fehler auftritt.
public void writeAll()
throws java.io.IOException
java.io.IOException - wenn beim Schreiben eines Objektes in
den Hintergrundspeicher ein I/O-Fehler auftritt.
public void cache(Cacheable cch)
throws java.io.IOException
cch - das Cacheable-Objekt, das in den Cache
gelegt werden soll.
java.io.IOException - wenn beim Schreiben des Objektes in den
Hintergrundspeicher ein I/O-Fehler auftritt (write through
eingeschaltet).
public void setModified(Cacheable cch)
throws java.io.IOException
Cacheable-Objekt verändert wurde. Das Objekt wird
als dirty gekennzeichnet. Falls write through
eingeschaltet ist, wird die Änderung direkt in den
persistenten Speicher geschrieben. Merke: Diese Methode
muß aufgerufen werden, wenn man den write
through-Mechanismus verwenden will, da der Cache sonst
nicht weiß, ob sich das Objekt verändert hat. Diese Methode
ruft setModified(true) auf dem
Cacheable auf, um es als dirty zu
kennzeichnen. Danach wird es in den Hintergrundspeicher
geschrieben, falls write through eingeschaltet ist.
cch - das Cacheable-Objekt, das als
modifiziert gekennzeichnet werden soll.
java.io.IOException - wenn beim Schreiben des Objektes in den
Hintergrundspeicher ein I/O-Fehler auftritt (write through
eingeschaltet).
public Cacheable get(java.lang.String sName)
throws java.io.IOException
sName - der Name des gewünschten Objektes. Dies ist der
Name der von der Methode getName() des
Cacheable geliefert wird.
Cacheable, das unter dem angegebenen
Namen im Cache gespeichert ist, oder null, falls
kein Objekt unter diesem Namen gefunden wurde.
java.io.IOException - wenn beim Laden des Objektes ein
I/O-Fehler auftritt.Storeable.getName()
public void remove(java.lang.String sName)
throws java.io.IOException
sName aus dem
Cache. Falls das Objekt dirty ist, wird es zuvor
persistent gespeichert.
sName - der Name des zu entfernenden Objektes. Dies ist
der Name der von der Methode getName() des
Cacheable geliefert wird.
java.io.IOException - wenn beim Schreiben des Objektes in den
Hintergrundspeicher ein I/O-Fehler auftritt (Objekt dirty).Storeable.getName()public void discard(java.lang.String sName)
sName. Das
Objekt wird nicht in der Hintergrundspeicher geschrieben. Alle
Änderungen, die seit der letzten Speicherung geschehen sind,
gehen verloren!
sName - der Name des zu verwerfenden Objektes. Dies ist
der Name der von der Methode getName() des
Cacheable geliefert wird.Storeable.getName()
public void clear()
throws java.io.IOException
java.io.IOException - wenn beim Schreiben eines Objektes in
den Hintergrundspeicher ein I/O-Fehler auftritt.public void removePersistently(java.lang.String sName)
sName aus dem
Cache. Diese Aktion wirkt sich direkt auf den persistenten
Speicher aus. Das Objekt wird auch aus diesem entfernt.
sName - der Name des zu verwerfenden Objektes. Dies ist
der Name der von der Methode getName() des
Cacheable geliefert wird.Storeable.getName()public void clearPersistently()
public void setWriteThrough(boolean b)
b - true, falls alle Veränderungen direkt in
den Hintergrundspeicher geschrieben werden sollen,
false sonst.Cacheable.setModified(boolean)public Cacheable[] getAllCachedObjects()
Cacheable-Objekten, in dem
sich alle Objekte befinden, die zur Zeit im Cache liegen.public int getMisses()
public int getHits()
public int getNotFound()
public int getFaults()
public void resetStats()
public java.lang.String getStatsString()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||