KONZEPT
/secure/memory.c - Benutzung des Speichers
AUTOR
Holger@Wunderland (23.04.1999)
BESCHREIBUNG
Das Memory ist ein universelles Frontend fuer die Extra-Wizinfo.
Jedes autorisierte Objekt kann beliebige Variablen darin ablegen
und globale Variablen auch referenzieren. Welchen Typ die Variablen
haben, ist unerheblich.
SICHERHEIT
- Objekte, die das Memory benutzen wollen, muessen in allowed() ge-
trusted werden.
- Auch zugelassene Objekte haben nur Zugriff auf ihre EIGENEN Daten.
FUNKTIONEN
int put(string key, mixed var);
Erzeugt einen Eintrag 'key' dem der Wert der Variable 'var' zugewie-
sen wird. War die Zuweisung erfolgreich, wird 1 zurueckgegeben. Bei
fehlender Autorisation oder bei einem Argumentfehler wird 0 zurueck-
gegeben.
mixed get(string key);
Liefert den Wert, der zum Eintrag 'key' gespeichert ist. Es wird da-
bei keine Kopie, sondern eine Referenz geliefert! Ist das Objekt
nicht autorisiert, gab es einen Fehler oder gibt es keinen Eintrag
'key' wird 0 zurueckgegeben. Um zu testen, ob das Resultat wirklich
der Wert von 'key' ist oder ob es den Eintrag nicht gibt, ist die
Funktion test() zu verwenden.
int test(string key);
Testet, ob es einen Eintrag 'key' gibt. Dies ist notwendig, da mit
get() dies nicht zweifelsfrei festgestellt werden kann.
varargs int wash(string key);
Diese Funktion loescht den Eintrag 'key', wenn dies angegeben wurde.
Ist 'key' nicht angegeben oder 0 werden _ALLE_ Eintraege entfernt.
BEISPIEL
Man schreibt ein Objekt, was seine Daten konsistent halten MUSS,
auch, wenn es mal neu geladen wird. Man trustet das Objekt im Ge-
hirn, indem man einen Erzmagier bittet, das mal zu tun.
Man kann jetzt mittels put(), get() und test() Daten in das Memory
legen legen oder abrufen. Man kann diese eingetragenen Daten auch
an Variablen referenzieren, dann eruebrigen sich weitere put() und
get() und die Daten sind staenig sicher.
Nach einem Neuladen des Objekts sind die Daten aus dem Memory ver-
fuegbar. Auch das Memory selbst verliert seine Daten durch ein
removen/destructen NICHT.
BEACHTE
Variablen die Referenzen in das Memory haben, sollten nicht nach
'aussen' dringen. Es ist nicht Sinn und Zweck des Memorys Unmengen
an unempfindlichen Daten aufzubewahren. Sowas vergeudet nur wert-
vollen RAM.
SIEHE AUCH
set_extra_wizinfo(E), get_extra_wizinfo(E), reference(LPC)
|