blob: 69a611a7eb00500f1e67f0dade3a0e2fffe52915 (
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
29
30
31
32
|
local cqueues = require'cqueues'
local pprint = require 'pprint'
local class = require 'r.class'
local qw = require 'r.qw'
local Queue = require 'queue'
local Log = require'log'
local BasePylon = class()
function BasePylon.make(cls, wilson, conf)
local self = setmetatable(conf, cls)
self.wilson = wilson
self.inbox = Queue()
self.log = Log(self.name,self.loglevel)
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.run(self)
self.cq = cqueues.new()
self.cq:wrap(function()
self:_connect()
self.log"connected!"
self.cq:wrap(self.recving, self)
self.cq:wrap(self.sending, self)
end)
self.log:loop(self.cq)
end
return BasePylon
|