#include #include #include auto startup(sdbusplus::async::context& ctx) -> sdbusplus::async::task<> { using Calculator = sdbusplus::client::net::poettering::Calculator<>; auto c = Calculator(ctx) .service(Calculator::default_service) .path(Calculator::instance_path); // Alternatively, sdbusplus::async::client_t() could have // been used to combine multiple interfaces into a single client-proxy. auto alternative_c [[maybe_unused]] = sdbusplus::async::client_t< sdbusplus::client::net::poettering::Calculator>(ctx) .service(Calculator::default_service) .path(Calculator::instance_path); { // Call the Multiply method. auto _ = co_await c.multiply(7, 6); std::cout << "Should be 42: " << _ << std::endl; } { // Get the LastResult property. auto _ = co_await c.last_result(); std::cout << "Should be 42: " << _ << std::endl; } { // Call the Clear method. co_await c.clear(); } { // Get the LastResult property. auto _ = co_await c.last_result(); std::cout << "Should be 0: " << _ << std::endl; } { // Set the LastResult property. co_await c.last_result(1234); // Get the LastResult property. auto _ = co_await c.last_result(); std::cout << "Should be 1234: " << _ << std::endl; } co_return; } int main() { sdbusplus::async::context ctx; ctx.spawn(startup(ctx)); ctx.spawn( sdbusplus::async::execution::just() | sdbusplus::async::execution::then([&ctx]() { ctx.request_stop(); })); ctx.run(); return 0; }