Comparison

util/pubsub.lua @ 4365:6704b3cd032e

util.pubsub: Support for events (currently subscription-added and subscription-removed)
author Matthew Wild <mwild1@gmail.com>
date Tue, 30 Aug 2011 15:03:27 -0400
parent 4364:af40cf682eba
child 4366:b6c18cadd3ec
comparison
equal deleted inserted replaced
4364:af40cf682eba 4365:6704b3cd032e
1 local events = require "util.events";
2
1 module("pubsub", package.seeall); 3 module("pubsub", package.seeall);
2 4
3 local service = {}; 5 local service = {};
4 local service_mt = { __index = service }; 6 local service_mt = { __index = service };
5 7
14 return setmetatable({ 16 return setmetatable({
15 config = setmetatable(config, { __index = default_config }); 17 config = setmetatable(config, { __index = default_config });
16 affiliations = {}; 18 affiliations = {};
17 subscriptions = {}; 19 subscriptions = {};
18 nodes = {}; 20 nodes = {};
21 events = events.new();
19 }, service_mt); 22 }, service_mt);
20 end 23 end
21 24
22 function service:jids_equal(jid1, jid2) 25 function service:jids_equal(jid1, jid2)
23 local normalize = self.config.normalize_jid; 26 local normalize = self.config.normalize_jid;
121 subs[jid][node] = true; 124 subs[jid][node] = true;
122 end 125 end
123 else 126 else
124 self.subscriptions[normal_jid] = { [jid] = { [node] = true } }; 127 self.subscriptions[normal_jid] = { [jid] = { [node] = true } };
125 end 128 end
129 self.events.fire_event("subscription-added", { node = node, jid = jid, normalized_jid = normal_jid, options = options });
126 return true; 130 return true;
127 end 131 end
128 132
129 function service:remove_subscription(node, actor, jid) 133 function service:remove_subscription(node, actor, jid)
130 -- Access checking 134 -- Access checking
161 end 165 end
162 if next(subs) == nil then 166 if next(subs) == nil then
163 self.subscriptions[normal_jid] = nil; 167 self.subscriptions[normal_jid] = nil;
164 end 168 end
165 end 169 end
170 self.events.fire_event("subscription-removed", { node = node, jid = jid, normalized_jid = normal_jid });
166 return true; 171 return true;
167 end 172 end
168 173
169 function service:get_subscription(node, actor, jid) 174 function service:get_subscription(node, actor, jid)
170 -- Access checking 175 -- Access checking