Software /
code /
verse
Diff
init.lua @ 0:caf260adc453
Beginning of new verse
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Tue, 04 Aug 2009 00:10:45 +0100 |
child | 1:7c8d0a2fc004 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/init.lua Tue Aug 04 00:10:45 2009 +0100 @@ -0,0 +1,59 @@ + + +local server = require "server"; +local xmlhandlers = require "xmlhandlers"; +local jid = require "jid"; +local jid_split = jid.split; + +module("verse", package.seeall); +local verse = _M; + +local stream = {}; +stream.__index = stream; + +function verse.new() + return setmetatable({}, stream); +end + +function verse.loop() + return server.loop(); +end + +function stream:connect(jid, pass) + self.jid, self.password = jid, pass; + self.username, self.host, self.resource = jid_split(jid); + local conn, err = server.addclient(self.connect_host or self.host, tonumber(self.connect_port) or 5222, new_listener(self), "*a"); + + if not conn then + return nil, err; + end + + self.conn = conn; +end + +function new_listener(stream) + local conn_listener = {}; + + function conn_listener.incoming(conn, data) + if not stream.connected then + stream.connected = true; + stream.send = function (stream, data) stream:debug("Sending data: "..tostring(data)); return conn.write(tostring(data)); end; + stream:event("connected"); + end + if data then + stream:event("incoming-raw", data); + end + end + + function conn_listener.disconnect(conn, err) + stream.connected = false; + stream:event("disconnected", { reason = err }); + end + + return conn_listener; +end + + +local log = require "util.logger".init("verse"); + +return verse;