12 stream.__index = stream; |
12 stream.__index = stream; |
13 stream_mt = stream; |
13 stream_mt = stream; |
14 |
14 |
15 verse.plugins = {}; |
15 verse.plugins = {}; |
16 |
16 |
17 function verse.new(base) |
17 function verse.new(logger, base) |
18 local t = base or {}; |
18 local t = setmetatable(base or {}, stream); |
19 t.id = tostring(t):match("%x*$"); |
19 t.id = tostring(t):match("%x*$"); |
20 t.logger = logger.init(t.id); |
20 t:set_logger(logger, true); |
21 t.events = events.new(); |
21 t.events = events.new(); |
22 return setmetatable(t, stream); |
22 return t; |
23 end |
23 end |
24 |
24 |
25 verse.add_task = require "util.timer".add_task; |
25 verse.add_task = require "util.timer".add_task; |
26 |
26 |
27 function verse.loop() |
27 function verse.loop() |
28 return server.loop(); |
28 return server.loop(); |
|
29 end |
|
30 |
|
31 verse.logger = logger.init; |
|
32 |
|
33 function verse.set_logger(logger) |
|
34 server.setlogger(logger); |
29 end |
35 end |
30 |
36 |
31 function stream:connect(connect_host, connect_port) |
37 function stream:connect(connect_host, connect_port) |
32 connect_host = connect_host or "localhost"; |
38 connect_host = connect_host or "localhost"; |
33 connect_port = tonumber(connect_port) or 5222; |
39 connect_port = tonumber(connect_port) or 5222; |
53 self.send = function (_, data) return w(conn, t(data)); end |
59 self.send = function (_, data) return w(conn, t(data)); end |
54 end |
60 end |
55 |
61 |
56 -- Logging functions |
62 -- Logging functions |
57 function stream:debug(...) |
63 function stream:debug(...) |
58 return self.logger("debug", ...); |
64 if self.logger and self.log.debug then |
|
65 return self.logger("debug", ...); |
|
66 end |
59 end |
67 end |
60 |
68 |
61 function stream:warn(...) |
69 function stream:warn(...) |
62 return self.logger("warn", ...); |
70 if self.logger and self.log.warn then |
|
71 return self.logger("warn", ...); |
|
72 end |
63 end |
73 end |
64 |
74 |
65 function stream:error(...) |
75 function stream:error(...) |
66 return self.logger("error", ...); |
76 if self.logger and self.log.error then |
|
77 return self.logger("error", ...); |
|
78 end |
|
79 end |
|
80 |
|
81 function stream:set_logger(logger, levels) |
|
82 local old_logger = self.logger; |
|
83 if logger then |
|
84 self.logger = logger; |
|
85 end |
|
86 if levels then |
|
87 if levels == true then |
|
88 levels = { "debug", "info", "warn", "error" }; |
|
89 end |
|
90 self.log = {}; |
|
91 for _, level in ipairs(levels) do |
|
92 self.log[level] = true; |
|
93 end |
|
94 end |
|
95 return old_logger; |
67 end |
96 end |
68 |
97 |
69 -- Event handling |
98 -- Event handling |
70 function stream:event(name, ...) |
99 function stream:event(name, ...) |
71 self:debug("Firing event: "..tostring(name)); |
100 self:debug("Firing event: "..tostring(name)); |