From 05a7fa9a2815b63b5b6f7eea107807e33aa62137 Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Tue, 22 Oct 2024 18:33:00 +0200 Subject: Trying to get the reference working --- modules/remote/tests/remote_loopback.cpp | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'modules/remote/tests') diff --git a/modules/remote/tests/remote_loopback.cpp b/modules/remote/tests/remote_loopback.cpp index d6f1e73..e1f3898 100644 --- a/modules/remote/tests/remote_loopback.cpp +++ b/modules/remote/tests/remote_loopback.cpp @@ -31,20 +31,38 @@ SAW_TEST("Remote Loopback RPC"){ auto eo_i64_srv = rmt.template data_listen(*addr); SAW_EXPECT(eo_i64_srv.is_value(), std::string{"Couldn't listen: "} + std::string{eo_i64_srv.get_error().get_category()}); auto& i64_srv = eo_i64_srv.get_value(); + + auto foo_func = [](data input) -> error_or> { + data rv; + rv.set(input.get() * 2); + return rv; + }; + + auto iface = interface_factory::create(std::move(foo_func)); - auto eo_rpc_srv = rmt.template rpc_listen(*addr, { - [](data input) -> error_or> { - data rv; - rv.set(input.get() * 2); - return rv; - } - }); + auto eo_rpc_srv = rmt.template rpc_listen(*addr, std::move(iface)); SAW_EXPECT(eo_rpc_srv.is_value(), std::string{"Couldn't listen: "} + std::string{eo_rpc_srv.get_error().get_category()}); auto& rpc_srv = eo_rpc_srv.get_value(); id id32{0u}; id id64{0u}; + data inp{21}; + + { + auto eo_send = u32_srv->send(inp, id32); + SAW_EXPECT(eo_send.is_value(), "Failed send."); + } + auto eo_called = rpc_srv->template call<"foo">(id32); + SAW_EXPECT(eo_called.is_value(), "Failed call."); + auto& called = eo_called.get_value(); + + { + auto eo_recv = i64_srv->receive(called); + SAW_EXPECT(eo_recv.is_value(), "Failed receive."); + auto& recv = eo_recv.get_value(); + SAW_EXPECT((recv.get() == 42), (std::string{"Wrong value received: "} + std::to_string(recv.get()))); + } } SAW_TEST("Remote Loopback Data"){ -- cgit v1.2.3