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