init.lua

changeset 0
caf260adc453
child 1
7c8d0a2fc004
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;

mercurial