Implement simple verb calling

Signed-off-by: Rahix <rahix@rahix.de>
dev
rahix 7 years ago
parent c6bbdcf984
commit e4f19c3e20

@ -240,6 +240,12 @@ end
function BaseControl:call(verb, ...)
if self.local_verbs[verb] ~= nil then
self.local_verbs[verb](...)
elseif self.remote_verbs[verb] ~= nil then
self.network:send(self.remote_verbs[verb], {
ty=Message.VerbRequest,
verb=verb,
param={...},
})
else
error("unknown verb")
end
@ -272,6 +278,10 @@ function BaseControl:_network_handler(remote, msg)
})
elseif msg.ty == Message.NounResponse then
-- Handled via pull
elseif msg.ty == Message.VerbRequest then
if self.local_verbs[msg.verb] ~= nil then
self.local_verbs[msg.verb](table.unpack(msg.param))
end
else
error("TODO: MessageType Unknown")
end

@ -56,4 +56,22 @@ function test_get_network()
local bc2 = BaseControl:new()
assert_equal(123, bc2:get("getnw1"), "wrong value")
assert_nil(bc2:get("getnw2"), "found non-exisiting")
end
function test_call_network()
local bc1 = BaseControl:new()
local tmp, n = 0, 0
bc1:register("callnw1", function(param, p2)
assert_equal(p2, 1234)
tmp = param
n = n + 1
end)
bc1:finalize()
local bc2 = BaseControl:new()
bc2:call("callnw1", 4321, 1234)
assert_equal(4321, tmp, "call incomplete")
assert_equal(1, n, "call not correct")
end

Loading…
Cancel
Save