1 #include <net/poettering/Calculator/client.hpp> 2 #include <sdbusplus/async.hpp> 3 4 #include <iostream> 5 6 auto startup(sdbusplus::async::context& ctx) -> sdbusplus::async::task<> 7 { 8 constexpr auto service = "net.poettering.Calculator"; 9 constexpr auto path = "/net/poettering/calculator"; 10 11 auto c = 12 sdbusplus::client::net::poettering::Calculator().service(service).path( 13 path); 14 15 // Alternatively, sdbusplus::async::client_t<Calculator, ...>() could have 16 // been used to combine multiple interfaces into a single client-proxy. 17 18 { 19 auto _ = co_await c.multiply(ctx, 7, 6); 20 std::cout << "Should be 42: " << _ << std::endl; 21 } 22 23 { 24 auto _ = co_await c.get_property<int64_t>(ctx, "LastResult"); 25 std::cout << "Should be 42: " << _ << std::endl; 26 } 27 28 { 29 co_await c.clear(ctx); 30 } 31 32 { 33 auto _ = co_await c.get_property<int64_t>(ctx, "LastResult"); 34 std::cout << "Should be 0: " << _ << std::endl; 35 } 36 37 { 38 co_await c.set_property<int64_t>(ctx, "LastResult", 1234); 39 auto _ = co_await c.get_property<int64_t>(ctx, "LastResult"); 40 std::cout << "Should be 1234: " << _ << std::endl; 41 } 42 43 co_return; 44 } 45 46 int main() 47 { 48 sdbusplus::async::context ctx; 49 ctx.spawn(startup(ctx)); 50 ctx.spawn( 51 sdbusplus::async::execution::just() | 52 sdbusplus::async::execution::then([&ctx]() { ctx.request_stop(); })); 53 ctx.run(); 54 55 return 0; 56 } 57