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 using Calculator = sdbusplus::client::net::poettering::Calculator<>; 9 10 auto c = Calculator(ctx) 11 .service(Calculator::default_service) 12 .path(Calculator::instance_path); 13 14 // Alternatively, sdbusplus::async::client_t<Calculator, ...>() could have 15 // been used to combine multiple interfaces into a single client-proxy. 16 auto alternative_c [[maybe_unused]] = 17 sdbusplus::async::client_t< 18 sdbusplus::client::net::poettering::Calculator>(ctx) 19 .service(Calculator::default_service) 20 .path(Calculator::instance_path); 21 22 { 23 // Call the Multiply method. 24 auto _ = co_await c.multiply(7, 6); 25 std::cout << "Should be 42: " << _ << std::endl; 26 } 27 28 { 29 // Get the LastResult property. 30 auto _ = co_await c.last_result(); 31 std::cout << "Should be 42: " << _ << std::endl; 32 } 33 34 { 35 // Call the Clear method. 36 co_await c.clear(); 37 } 38 39 { 40 // Get the LastResult property. 41 auto _ = co_await c.last_result(); 42 std::cout << "Should be 0: " << _ << std::endl; 43 } 44 45 { 46 // Set the LastResult property. 47 co_await c.last_result(1234); 48 // Get the LastResult property. 49 auto _ = co_await c.last_result(); 50 std::cout << "Should be 1234: " << _ << std::endl; 51 } 52 53 co_return; 54 } 55 56 int main() 57 { 58 sdbusplus::async::context ctx; 59 ctx.spawn(startup(ctx)); 60 ctx.spawn( 61 sdbusplus::async::execution::just() | 62 sdbusplus::async::execution::then([&ctx]() { ctx.request_stop(); })); 63 ctx.run(); 64 65 return 0; 66 } 67