#include #include #include auto startup(sdbusplus::async::context& ctx) -> sdbusplus::async::task<> { constexpr auto service = "net.poettering.Calculator"; constexpr auto path = "/net/poettering/calculator"; auto c = sdbusplus::client::net::poettering::Calculator(ctx) .service(service) .path(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(service) .path(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; }