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