blob: 3a26017ff496b9a7f5f9e0640875b2bc493b2c55 [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
49 Die Callback-Methode wird mit folgenden Argumenten gerufen:
50
51 * object hooksource: das Objekt, in welchem das Ereignis
52 ausgeloest wurde
53
54 * int hookid: die ID des Hooks
55
56 * mixed hookdata: die Daten des Hooks (siehe Doku zum jeweiligen
57 Hook)
58
59 Fuer hookprio sind folgende Werte vorgesehen (Konstanten aus
60 hook.h):
61
62 * H_HOOK_LIBPRIO(x)
63
64 * H_HOOK_GUILDPRIO(x) oder
65
66 * H_HOOK_OTHERPRIO(x).
67
68 x darf 0, 1 oder 2 sein (je niedriger, desto hoeher die
69 Prioritaet).
70
71 Fuer consumertype gibt es vier festgelegte Arten, die fuer alle
72 Hooks existieren koennen, aber nicht muessen (Konstanten aus
73 hook.h):
74
75 * H_LISTENER: Wird nur informiert
76
77 * H_DATA_MODIFICATOR: Kann Daten des Ereignisses aendern
78
79 * H_HOOK_MODIFICATOR: Kann das Ereignis zusaetzlich abbrechen
80
81 * H_HOOK_SURVEYOR: Kann zusaetzlich entscheiden, ob sich Objekte
82 registrieren, Daten modifizieren oder Ereignisse abbrechen
83 koennen
84
85 Die Methode *HConsumerTypeIsAllowed* gibt Aufschluss darueber,
86 welche Consumer-Typen tatsaechlich freigegeben sind.
87
88
89RUECKGABEWERTE
90==============
91
92 1 : Registrierung erfolgreich
93
94 -1 : Hook unbekannt
95
96 -2 : consumer ist keine closure und es konnte kein Callback auf
97 HookCallback im consumer erstellt werden.
98
99 -3 : Consumer ist bereits registriert
100
101 -4 : Consumer-Typ ist nicht erlaubt
102
103 -5 : hookprio ist nicht erlaubt
104
105 -6 : Surveyor hat Registrierung nicht erlaubt
106
107 -7 : zuviele Hooks registriert / kein Hookeintrag frei
108
109
110SIEHE AUCH
111==========
112
113 HUnregisterFromHook(), HookCallback(), HListHooks(),
114 HIsHookConsumer()
115
116Letzte Aenderung: 05.10.2022, Bugfix