diff options
author | Waqas Hussain <waqas20@gmail.com> | 2008-10-12 17:40:03 +0500 |
---|---|---|
committer | Waqas Hussain <waqas20@gmail.com> | 2008-10-12 17:40:03 +0500 |
commit | 957fe047e2da04dd1fc05aacaa119d4ae1944e39 (patch) | |
tree | 1bfebc7063c3b00c226e6ff9f30dc8ef8792ffbf /core | |
parent | 36df1aac32d6530fdaec7fcaa5f80c8d48599aba (diff) | |
download | prosody-957fe047e2da04dd1fc05aacaa119d4ae1944e39.tar.gz prosody-957fe047e2da04dd1fc05aacaa119d4ae1944e39.zip |
Added some roster management functions
Diffstat (limited to 'core')
-rw-r--r-- | core/rostermanager.lua | 32 | ||||
-rw-r--r-- | core/sessionmanager.lua | 4 |
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 |