Morgengrauner Dokumentation
Dateipfad: /home/mud/mudlib/doc//lfun/HRegisterToHook
HRegisterToHook()
*****************
FUNKTION
========
int HRegisterToHook(int hookid, object|closure consumer, int
hookprio,
int consumertype, int timeInSeconds)
DEFINIERT IN
============
/std/hook_provider.c /sys/hook.h
ARGUMENTE
=========
* hookid: gibt den Hook-Typ an Man kann sich nur fuer Hooktypen
eintragen, die die Methode HListHooks() angeboten hat.
* consumer: Objekt oder Closure. Wenn ein Objekt uebergeben wird,
wird eine Closure auf HookCallback() an diesem Objekt erstellt
und gespeichert, andernfalls wird die uebergebene Closure
gespeichert. Diese Closure wird spaeter beim Ausloesen des Hooks
aufgerufen.
* hookprio: Gibt die Prioritaet an, mit der der Hook laufen soll.
Diese Angabe bestimmt die Reihenfolge, in der die Hooks in der
Liste der Hooks eingetragen werden. Siehe Abschnitt Beschreibung
fuer Details.
* consumertype: Gibt an, um welche Art von Consumer es sich
handelt.
* timeInSeconds: gibt die Laufzeit des Hooks an. Falls 0
eingetragen wird, laeuft der Hook ewig.
BESCHREIBUNG
============
Registriert ein Objekt oder eine Closure als Hook-Konsument.
Die Callback-Methode wird mit folgenden Argumenten gerufen: -
object hooksource: das Objekt, in welchem das Ereignis ausgeloest
wurde - int hookid: die ID des Hooks - mixed hookdata: die Daten
des Hooks (siehe Doku zum jeweiligen Hook)
Fuer hookprio sind folgende Werte vorgesehen (Konstanten aus
hook.h): - H_HOOK_LIBPRIO(x) - H_HOOK_GUILDPRIO(x) oder -
H_HOOK_OTHERPRIO(x). x darf 0, 1 oder 2 sein (je niedriger, desto
hoeher die Prioritaet).
Fuer consumertype gibt es vier festgelegte Arten, die fuer alle
Hooks existieren koennen, aber nicht muessen (Konstanten aus
hook.h): - H_LISTENER: Wird nur informiert - H_DATA_MODIFICATOR:
Kann Daten des Ereignisses aendern - H_HOOK_MODIFICATOR: Kann das
Ereignis zusaetzlich abbrechen - H_HOOK_SURVEYOR: Kann zusaetzlich
entscheiden, ob sich Objekte
registrieren, Daten modifizieren oder Ereignisse abbrechen
koennen
Die Methode *HConsumerTypeIsAllowed* gibt Aufschluss darueber,
welche Consumer-Typen tatsaechlich freigegeben sind.
RUECKGABEWERTE
==============
1 : Registrierung erfolgreich -1 : Hook unbekannt -2 : consumer
ist keine closure und es konnte kein Callback auf
HookCallback im consumer erstellt werden.
-3 : Consumer ist bereits registriert -4 : Consumer-Typ ist nicht
erlaubt -5 : hookprio ist nicht erlaubt -6 : Surveyor hat
Registrierung nicht erlaubt -7 : zuviele Hooks registriert / kein
Hookeintrag frei
SIEHE AUCH
==========
HUnregisterFromHook(), HookCallback(), HListHooks(),
HIsHookConsumer()
Letzte Aenderung: 05.10.2022, Bugfix
zurück zur Übersicht