Software /
code /
prosody
Comparison
util/events.lua @ 7039:138241cc1b3a
util.events: Document data structures
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Wed, 23 Dec 2015 11:17:26 +0000 |
parent | 6777:5de6b93d0190 |
child | 7424:ba83ff7d9bd7 |
comparison
equal
deleted
inserted
replaced
7037:5d52e4ee2ae1 | 7039:138241cc1b3a |
---|---|
15 local next = next; | 15 local next = next; |
16 | 16 |
17 local _ENV = nil; | 17 local _ENV = nil; |
18 | 18 |
19 local function new() | 19 local function new() |
20 -- Map event name to ordered list of handlers (lazily built): handlers[event_name] = array_of_handler_functions | |
20 local handlers = {}; | 21 local handlers = {}; |
22 -- Array of wrapper functions that wrap all events (nil if empty) | |
21 local global_wrappers; | 23 local global_wrappers; |
24 -- Per-event wrappers: wrappers[event_name] = wrapper_function | |
22 local wrappers = {}; | 25 local wrappers = {}; |
26 -- Event map: event_map[handler_function] = priority_number | |
23 local event_map = {}; | 27 local event_map = {}; |
28 -- Called on-demand to build handlers entries | |
24 local function _rebuild_index(handlers, event) | 29 local function _rebuild_index(handlers, event) |
25 local _handlers = event_map[event]; | 30 local _handlers = event_map[event]; |
26 if not _handlers or next(_handlers) == nil then return; end | 31 if not _handlers or next(_handlers) == nil then return; end |
27 local index = {}; | 32 local index = {}; |
28 for handler in pairs(_handlers) do | 33 for handler in pairs(_handlers) do |