From e4f19c3e208d708bd6ef16fda2352a015f91351c Mon Sep 17 00:00:00 2001 From: Rahix Date: Mon, 15 Apr 2019 18:27:43 +0200 Subject: [PATCH] Implement simple verb calling Signed-off-by: Rahix --- bc.lua | 10 ++++++++++ tests/network.lua | 18 ++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/bc.lua b/bc.lua index caa42afbbaef..3d0949dd3b18 100644 --- a/bc.lua +++ b/bc.lua @@ -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 diff --git a/tests/network.lua b/tests/network.lua index a7bdc7234d7c..c89e95f1d65c 100644 --- a/tests/network.lua +++ b/tests/network.lua @@ -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