summaryrefslogtreecommitdiff
path: root/pylon.lua
blob: f00faa6fc4b71cc334704525a86a78f0e52975d6 (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
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.cq:wrap(function()
		self:_connect()
		self.cq:wrap(self.recving, self)
		self.cq:wrap(self.sending, self)
	end)
	print(self.name, self.cq:loop())
end
return BasePylon