8 |
8 |
9 |
9 |
10 local t_insert = table.insert; |
10 local t_insert = table.insert; |
11 local ipairs = ipairs; |
11 local ipairs = ipairs; |
12 |
12 |
|
13 local events = _G.prosody.events; |
|
14 |
13 module "eventmanager" |
15 module "eventmanager" |
14 |
16 |
15 local event_handlers = {}; |
17 local event_handlers = {}; |
16 |
18 |
17 function add_event_hook(name, handler) |
19 function add_event_hook(name, handler) |
18 if not event_handlers[name] then |
20 return events.add_handler(name, handler); |
19 event_handlers[name] = {}; |
|
20 end |
|
21 t_insert(event_handlers[name] , handler); |
|
22 end |
21 end |
23 |
22 |
24 function fire_event(name, ...) |
23 function fire_event(name, ...) |
25 local event_handlers = event_handlers[name]; |
24 return events.fire_event(name, ...); |
26 if event_handlers then |
|
27 for name, handler in ipairs(event_handlers) do |
|
28 handler(...); |
|
29 end |
|
30 end |
|
31 end |
25 end |
32 |
26 |
33 return _M; |
27 return _M; |