Diff

plugins/mod_message.lua @ 1418:d14de6cb8b5b

mod_message, mod_presence: Maintain list of top resources. Less work in routing messages to bare JIDs. - #optimization
author Waqas Hussain <waqas20@gmail.com>
date Fri, 26 Jun 2009 08:54:22 +0500
parent 1329:599a058d3961
child 1423:5e72c3e1743a
line wrap: on
line diff
--- a/plugins/mod_message.lua	Fri Jun 26 08:52:26 2009 +0500
+++ b/plugins/mod_message.lua	Fri Jun 26 08:54:22 2009 +0500
@@ -9,24 +9,6 @@
 local offlinemanager = require "core.offlinemanager";
 local t_insert = table.insert;
 
-local function select_top_resources(user)
-	local priority = 0;
-	local recipients = {};
-	for _, session in pairs(user.sessions) do -- find resource with greatest priority
-		if session.presence then
-			-- TODO check active privacy list for session
-			local p = session.priority;
-			if p > priority then
-				priority = p;
-				recipients = {session};
-			elseif p == priority then
-				t_insert(recipients, session);
-			end
-		end
-	end
-	return recipients;
-end
-
 local function process_to_bare(bare, origin, stanza)
 	local user = bare_sessions[bare];
 	
@@ -45,8 +27,8 @@
 		end  -- current policy is to discard headlines if no recipient is available
 	else -- chat or normal message
 		if user then -- some resources are connected
-			local recipients = select_top_resources(user);
-			if #recipients > 0 then
+			local recipients = user.top_resources;
+			if recipients then
 				for i=1,#recipients do
 					recipients[i].send(stanza);
 				end