Merge 0.7->trunk
[prosody.git] / core / eventmanager.lua
1 -- Prosody IM
2 -- Copyright (C) 2008-2010 Matthew Wild
3 -- Copyright (C) 2008-2010 Waqas Hussain
4 -- 
5 -- This project is MIT/X11 licensed. Please see the
6 -- COPYING file in the source package for more information.
7 --
8
9
10 local t_insert = table.insert;
11 local ipairs = ipairs;
12
13 module "eventmanager"
14
15 local event_handlers = {};
16
17 function add_event_hook(name, handler)
18         if not event_handlers[name] then
19                 event_handlers[name] = {};
20         end
21         t_insert(event_handlers[name] , handler);
22 end
23
24 function fire_event(name, ...)
25         local event_handlers = event_handlers[name];
26         if event_handlers then
27                 for name, handler in ipairs(event_handlers) do
28                         handler(...);
29                 end
30         end
31 end
32
33 return _M;