Comparison

core/moduleapi.lua @ 6647:0c363fddcdd9

Merge 0.10->trunk
author Kim Alvefur <zash@zash.se>
date Sun, 03 May 2015 18:39:27 +0200
parent 6557:8aa967c81cbc
parent 6640:859e9af53aa1
child 6666:42fdc8dddf04
comparison
equal deleted inserted replaced
6636:441f8cb0deec 6647:0c363fddcdd9
118 end 118 end
119 api.hook_stanza = api.hook_tag; -- COMPAT w/pre-0.9 119 api.hook_stanza = api.hook_tag; -- COMPAT w/pre-0.9
120 120
121 function api:unhook(event, handler) 121 function api:unhook(event, handler)
122 return self:unhook_object_event((hosts[self.host] or prosody).events, event, handler); 122 return self:unhook_object_event((hosts[self.host] or prosody).events, event, handler);
123 end
124
125 function api:wrap_object_event(events_object, event, handler)
126 return self:hook_object_event(assert(events_object.wrappers, "no wrappers"), event, handler);
127 end
128
129 function api:wrap_event(event, handler)
130 return self:wrap_object_event((hosts[self.host] or prosody).events, event, handler);
131 end
132
133 function api:wrap_global(event, handler)
134 return self:hook_object_event(prosody.events, event, handler, priority);
123 end 135 end
124 136
125 function api:require(lib) 137 function api:require(lib)
126 local f, n = pluginloader.load_code(self.name, lib..".lib.lua", self.environment); 138 local f, n = pluginloader.load_code(self.name, lib..".lib.lua", self.environment);
127 if not f then 139 if not f then
393 405
394 function api:measure(name, type) 406 function api:measure(name, type)
395 return measure(type, "/"..self.host.."/mod_"..self.name.."/"..name); 407 return measure(type, "/"..self.host.."/mod_"..self.name.."/"..name);
396 end 408 end
397 409
410 function api:measure_object_event(events_object, event_name, stat_name)
411 local m = self:measure(stat_name or event_name, "duration");
412 local function handler(handlers, event_name, event_data)
413 local finished = m();
414 local ret = handlers(event_name, event_data);
415 finished();
416 return ret;
417 end
418 return self:hook_object_event(events_object, event_name, handler);
419 end
420
421 function api:measure_event(event_name, stat_name)
422 return self:hook_object_event((hosts[self.host] or prosody).events.wrappers, event_name, handler);
423 end
424
425 function api:measure_global_event(event_name, stat_name)
426 return self:hook_object_event(prosody.events.wrappers, event_name, handler);
427 end
428
398 function api.init(mm) 429 function api.init(mm)
399 modulemanager = mm; 430 modulemanager = mm;
400 return api; 431 return api;
401 end 432 end
402 433