blob: 01d9c775bff9a296d0f3636b619895b8e8b796ee [file] [log] [blame]
Bugfix852b5a12022-10-05 14:37:18 +02001HRegisterToHook()
2=================
3
4FUNKTION
5--------
6
7 int HRegisterToHook(int hookid, object|closure consumer, int hookprio,
8 int consumertype, int timeInSeconds)
9
10DEFINIERT IN
11------------
12
13 /std/hook_provider.c
14 /sys/hook.h
15
16ARGUMENTE
17---------
18
19 - hookid: gibt den Hook-Typ an
20 Man kann sich nur fuer Hooktypen eintragen, die die Methode
21 :doc:`HListHooks` angeboten hat.
22 - consumer: Objekt oder Closure. Wenn ein Objekt uebergeben wird, wird
23 eine Closure auf :doc:`HookCallback` an diesem Objekt erstellt und
24 gespeichert, andernfalls wird die uebergebene Closure gespeichert.
25 Diese Closure wird spaeter beim Ausloesen des Hooks aufgerufen.
26 - hookprio: Gibt die Prioritaet an, mit der der Hook laufen soll.
27 Diese Angabe bestimmt die Reihenfolge, in der die Hooks in der Liste der
28 Hooks eingetragen werden. Siehe Abschnitt Beschreibung fuer Details.
29 - consumertype: Gibt an, um welche Art von Consumer es sich handelt.
30 - timeInSeconds: gibt die Laufzeit des Hooks an. Falls 0 eingetragen wird,
31 laeuft der Hook ewig.
32
33BESCHREIBUNG
34------------
35
36 Registriert ein Objekt oder eine Closure als Hook-Konsument.
37
38 Die Callback-Methode wird mit folgenden Argumenten gerufen:
39 - object hooksource: das Objekt, in welchem das Ereignis ausgeloest wurde
40 - int hookid: die ID des Hooks
41 - mixed hookdata: die Daten des Hooks (siehe Doku zum jeweiligen Hook)
42
43 Fuer hookprio sind folgende Werte vorgesehen (Konstanten aus hook.h):
44 - H_HOOK_LIBPRIO(x)
45 - H_HOOK_GUILDPRIO(x) oder
46 - H_HOOK_OTHERPRIO(x).
47 x darf 0, 1 oder 2 sein (je niedriger, desto hoeher die Prioritaet).
48
49 Fuer consumertype gibt es vier festgelegte Arten, die fuer alle Hooks
50 existieren koennen, aber nicht muessen (Konstanten aus hook.h):
51 - H_LISTENER: Wird nur informiert
52 - H_DATA_MODIFICATOR: Kann Daten des Ereignisses aendern
53 - H_HOOK_MODIFICATOR: Kann das Ereignis zusaetzlich abbrechen
54 - H_HOOK_SURVEYOR: Kann zusaetzlich entscheiden, ob sich Objekte
55 registrieren, Daten modifizieren oder Ereignisse abbrechen koennen
56 Die Methode :doc:`HConsumerTypeIsAllowed` gibt
57 Aufschluss darueber, welche Consumer-Typen tatsaechlich freigegeben sind.
58
59RUECKGABEWERTE
60--------------
61
62 1 : Registrierung erfolgreich
63 -1 : Hook unbekannt
64 -2 : consumer ist keine closure und es konnte kein Callback auf
65 HookCallback im consumer erstellt werden.
66 -3 : Consumer ist bereits registriert
67 -4 : Consumer-Typ ist nicht erlaubt
68 -5 : hookprio ist nicht erlaubt
69 -6 : Surveyor hat Registrierung nicht erlaubt
70 -7 : zuviele Hooks registriert / kein Hookeintrag frei
71
72SIEHE AUCH
73----------
74
75 :doc:`HUnregisterFromHook`, :doc:`HookCallback`, :doc:`HListHooks`,
76 :doc:`HIsHookConsumer`
77
78Letzte Aenderung: 05.10.2022, Bugfix