Software /
code /
prosody
Comparison
util/events.lua @ 1162:bd1f0e6d50a7
Merging SASL buggy client workaround with current tip.
author | Tobias Markmann <tm@ayena.de> |
---|---|
date | Fri, 15 May 2009 17:33:04 +0200 |
parent | 1146:542d49518d3a |
child | 1175:edef0c10e076 |
comparison
equal
deleted
inserted
replaced
1161:5bc2b7b5b81d | 1162:bd1f0e6d50a7 |
---|---|
51 local function _create_dispatcher(event) -- FIXME duplicate code in fire_event | 51 local function _create_dispatcher(event) -- FIXME duplicate code in fire_event |
52 local h = handlers[event]; | 52 local h = handlers[event]; |
53 if not h then h = {}; handlers[event] = h; end | 53 if not h then h = {}; handlers[event] = h; end |
54 local dispatcher = function(data) | 54 local dispatcher = function(data) |
55 for _, handler in ipairs(h) do | 55 for _, handler in ipairs(h) do |
56 handler(data); | 56 local ret = handler(data); |
57 if ret ~= nil then return ret; end | |
57 end | 58 end |
58 end; | 59 end; |
59 dispatchers[event] = dispatcher; | 60 dispatchers[event] = dispatcher; |
60 return dispatcher; | 61 return dispatcher; |
61 end; | 62 end; |
64 end; | 65 end; |
65 local function fire_event(event, data) -- FIXME duplicates dispatcher code | 66 local function fire_event(event, data) -- FIXME duplicates dispatcher code |
66 local h = handlers[event]; | 67 local h = handlers[event]; |
67 if h then | 68 if h then |
68 for _, handler in ipairs(h) do | 69 for _, handler in ipairs(h) do |
69 handler(data); | 70 local ret = handler(data); |
71 if ret ~= nil then return ret; end | |
70 end | 72 end |
71 end | 73 end |
72 end; | 74 end; |
73 local function get_named_arg_dispatcher(event, ...) | 75 local function get_named_arg_dispatcher(event, ...) |
74 local dispatcher = get_dispatcher(event); | 76 local dispatcher = get_dispatcher(event); |