Software / code / verse
Comparison
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 |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:caf260adc453 |
|---|---|
| 1 | |
| 2 | |
| 3 local server = require "server"; | |
| 4 local xmlhandlers = require "xmlhandlers"; | |
| 5 local jid = require "jid"; | |
| 6 local jid_split = jid.split; | |
| 7 | |
| 8 module("verse", package.seeall); | |
| 9 local verse = _M; | |
| 10 | |
| 11 local stream = {}; | |
| 12 stream.__index = stream; | |
| 13 | |
| 14 function verse.new() | |
| 15 return setmetatable({}, stream); | |
| 16 end | |
| 17 | |
| 18 function verse.loop() | |
| 19 return server.loop(); | |
| 20 end | |
| 21 | |
| 22 function stream:connect(jid, pass) | |
| 23 self.jid, self.password = jid, pass; | |
| 24 self.username, self.host, self.resource = jid_split(jid); | |
| 25 local conn, err = server.addclient(self.connect_host or self.host, tonumber(self.connect_port) or 5222, new_listener(self), "*a"); | |
| 26 | |
| 27 if not conn then | |
| 28 return nil, err; | |
| 29 end | |
| 30 | |
| 31 self.conn = conn; | |
| 32 end | |
| 33 | |
| 34 function new_listener(stream) | |
| 35 local conn_listener = {}; | |
| 36 | |
| 37 function conn_listener.incoming(conn, data) | |
| 38 if not stream.connected then | |
| 39 stream.connected = true; | |
| 40 stream.send = function (stream, data) stream:debug("Sending data: "..tostring(data)); return conn.write(tostring(data)); end; | |
| 41 stream:event("connected"); | |
| 42 end | |
| 43 if data then | |
| 44 stream:event("incoming-raw", data); | |
| 45 end | |
| 46 end | |
| 47 | |
| 48 function conn_listener.disconnect(conn, err) | |
| 49 stream.connected = false; | |
| 50 stream:event("disconnected", { reason = err }); | |
| 51 end | |
| 52 | |
| 53 return conn_listener; | |
| 54 end | |
| 55 | |
| 56 | |
| 57 local log = require "util.logger".init("verse"); | |
| 58 | |
| 59 return verse; |