Added some roster management functions

Sun, 12 Oct 2008 17:40:03 +0500

author
Waqas Hussain <waqas20@gmail.com>
date
Sun, 12 Oct 2008 17:40:03 +0500
changeset 101
c690fa382743
parent 100
ca7bad346cde
child 102
a5b914370db5

Added some roster management functions

core/rostermanager.lua file | annotate | diff | comparison | revisions
core/sessionmanager.lua file | annotate | diff | comparison | revisions
--- a/core/rostermanager.lua	Sun Oct 12 17:38:17 2008 +0500
+++ b/core/rostermanager.lua	Sun Oct 12 17:40:03 2008 +0500
@@ -14,7 +14,7 @@
 
 module "rostermanager"
 
-function getroster(username, host)
+--[[function getroster(username, host)
 	return { 
 			["mattj@localhost"] = true,
 			["tobias@getjabber.ath.cx"] = true,
@@ -22,7 +22,35 @@
 			["thorns@getjabber.ath.cx"] = true, 
 			["idw@getjabber.ath.cx"] = true, 
 		}
---	return datamanager.load(username, host, "roster") or {};
+	--return datamanager.load(username, host, "roster") or {};
+end]]
+
+function add_to_roster(roster, jid, item)
+	roster[jid] = item;
+	-- TODO implement
+end
+
+function remove_from_roster(roster, jid)
+	roster[jid] = nil;
+	-- TODO implement
+end
+
+function load_roster(host, username)
+	if hosts[host] and hosts[host].sessions[username] then
+		local roster = hosts[host].sessions[username].roster;
+		if not roster then
+			return hosts[host].sessions[username].roster = datamanger.load(username, host, "roster") or {};
+		end
+		return roster;
+	end
+	error("Attempt to load roster for non-loaded user"); --return nil;
+end
+
+function save_roster(host, username)
+	if hosts[host] and hosts[host].sessions[username] and hosts[host].sessions[username].roster then
+		return datamanager.save(username, host, "roster", hosts[host].sessions[username].roster);
+	end
+	return nil;
 end
 
 return _M;
\ No newline at end of file
--- a/core/sessionmanager.lua	Sun Oct 12 17:38:17 2008 +0500
+++ b/core/sessionmanager.lua	Sun Oct 12 17:40:03 2008 +0500
@@ -12,7 +12,7 @@
 local log = require "util.logger".init("sessionmanager");
 local error = error;
 local uuid_generate = require "util.uuid".uuid_generate;
-local rm_getroster = require "core.rostermanager".getroster
+local rm_load_roster = require "core.rostermanager".load_roster;
 
 local newproxy = newproxy;
 local getmetatable = getmetatable;
@@ -92,7 +92,7 @@
 	session.full_jid = session.username .. '@' .. session.host .. '/' .. resource;
 	hosts[session.host].sessions[session.username].sessions[resource] = session;
 	
-	session.roster = rm_getroster(session.username, session.host);
+	session.roster = rm_load_roster(session.username, session.host);
 	
 	return true;
 end

mercurial