aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorWaqas Hussain <waqas20@gmail.com>2008-10-12 17:40:03 +0500
committerWaqas Hussain <waqas20@gmail.com>2008-10-12 17:40:03 +0500
commit957fe047e2da04dd1fc05aacaa119d4ae1944e39 (patch)
tree1bfebc7063c3b00c226e6ff9f30dc8ef8792ffbf /core
parent36df1aac32d6530fdaec7fcaa5f80c8d48599aba (diff)
downloadprosody-957fe047e2da04dd1fc05aacaa119d4ae1944e39.tar.gz
prosody-957fe047e2da04dd1fc05aacaa119d4ae1944e39.zip
Added some roster management functions
Diffstat (limited to 'core')
-rw-r--r--core/rostermanager.lua32
-rw-r--r--core/sessionmanager.lua4
2 files changed, 32 insertions, 4 deletions
diff --git a/core/rostermanager.lua b/core/rostermanager.lua
index 5f06a308..1097e327 100644
--- a/core/rostermanager.lua
+++ b/core/rostermanager.lua
@@ -14,7 +14,7 @@ local datamanager = datamanager;
module "rostermanager"
-function getroster(username, host)
+--[[function getroster(username, host)
return {
["mattj@localhost"] = true,
["tobias@getjabber.ath.cx"] = true,
@@ -22,7 +22,35 @@ function getroster(username, host)
["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
diff --git a/core/sessionmanager.lua b/core/sessionmanager.lua
index 4f8b1913..c216b8da 100644
--- a/core/sessionmanager.lua
+++ b/core/sessionmanager.lua
@@ -12,7 +12,7 @@ local modulemanager = require "core.modulemanager";
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 @@ function bind_resource(session, resource)
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