Software /
code /
prosody
Comparison
core/moduleapi.lua @ 6639:3003d041c159
moduleapi: Experimental API for modules to measure the rate+duration of events
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Tue, 28 Apr 2015 13:52:07 +0100 |
parent | 6556:74253c7beb9c |
child | 6640:859e9af53aa1 |
comparison
equal
deleted
inserted
replaced
6638:9d2b56fd6b47 | 6639:3003d041c159 |
---|---|
373 | 373 |
374 function api:measure(name, type) | 374 function api:measure(name, type) |
375 return measure(type, "/"..self.host.."/mod_"..self.name.."/"..name); | 375 return measure(type, "/"..self.host.."/mod_"..self.name.."/"..name); |
376 end | 376 end |
377 | 377 |
378 function api:measure_object_event(events_object, event_name, stat_name) | |
379 local m = self:measure(stat_name or event_name, "duration"); | |
380 local function handler(handlers, event_name, event_data) | |
381 local finished = m(); | |
382 local ret = handlers(event_name, event_data); | |
383 finished(); | |
384 return ret; | |
385 end | |
386 return self:hook_object_event(events_object, event_name, handler); | |
387 end | |
388 | |
389 function api:measure_event(event_name, stat_name) | |
390 return self:hook_object_event((hosts[self.host] or prosody).events.wrappers, event_name, handler); | |
391 end | |
392 | |
393 function api:measure_global_event(event_name, stat_name) | |
394 return self:hook_object_event(prosody.events.wrappers, event_name, handler); | |
395 end | |
396 | |
378 function api.init(mm) | 397 function api.init(mm) |
379 modulemanager = mm; | 398 modulemanager = mm; |
380 return api; | 399 return api; |
381 end | 400 end |
382 | 401 |