diff options
author | Waqas Hussain <waqas20@gmail.com> | 2008-11-05 03:06:05 +0500 |
---|---|---|
committer | Waqas Hussain <waqas20@gmail.com> | 2008-11-05 03:06:05 +0500 |
commit | c2a6d44d9dad7961ff6dfadd86fce06cc2aaf9da (patch) | |
tree | e4c4aa6c503cc2ccb80d99c99ede73c9eb150c13 /core/componentmanager.lua | |
parent | f20354901086278fe2dbe39458aa101e9782a4c3 (diff) | |
download | prosody-c2a6d44d9dad7961ff6dfadd86fce06cc2aaf9da.tar.gz prosody-c2a6d44d9dad7961ff6dfadd86fce06cc2aaf9da.zip |
/me glares at MattJ
Diffstat (limited to 'core/componentmanager.lua')
-rw-r--r-- | core/componentmanager.lua | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/core/componentmanager.lua b/core/componentmanager.lua new file mode 100644 index 00000000..18bf5c02 --- /dev/null +++ b/core/componentmanager.lua @@ -0,0 +1,35 @@ +
+
+local log = require "util.logger".init("componentmanager")
+local jid_split = require "util.jid".split;
+local hosts = hosts;
+
+local components = {};
+
+module "componentmanager"
+
+function handle_stanza(origin, stanza)
+ local node, host = jid_split(stanza.attr.to);
+ local component = components[host];
+ if not component then component = components[node.."@"..host]; end -- hack to allow hooking node@server
+ if not component then component = components[stanza.attr.to]; end -- hack to allow hooking node@server/resource and server/resource
+ if component then
+ log("debug", "stanza being handled by component: "..host);
+ component(origin, stanza);
+ else
+ log("error", "Component manager recieved a stanza for a non-existing component: " .. stanza.attr.to);
+ end
+end
+
+function register_component(host, component)
+ if not hosts[host] then
+ -- TODO check for host well-formedness
+ components[host] = component;
+ hosts[host] = {type = "component", connected = true};
+ log("debug", "component added: "..host);
+ else
+ log("error", "Attempt to set component for existing host: "..host);
+ end
+end
+
+return _M;
\ No newline at end of file |