blob: 02c9b2dce19b7c175c0413ac9cedfab38f0f3c89 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
local cqueues = require'cqueues'
local class = require 'r.class'
local qw = require 'r.qw'
local Queue = require 'queue'
local BasePylon = class()
function BasePylon.make(cls, wilson, conf)
local self = setmetatable(conf, cls)
self.wilson = wilson
self.inbox = Queue()
self:init()
return self end
function BasePylon._check_fields(self, fields) for k in qw.i(fields) do
assert(self[k]~=nil, self.name..": missing field "..k) end end
function BasePylon.post(self, dest_channel, message)
self.inbox:enqueue(dest_channel, message) end
function BasePylon.log(self, ...)
if self.debug then print(self.name, ...) end end
function BasePylon.run(self)
self.cq = cqueues.new()
self:_connect()
self.cq:wrap(self.recving, self)
self.cq:wrap(self.sending, self)
print(self.name, self.cq:loop()) end
return BasePylon
|