1 #include <net/poettering/Calculator/aserver.hpp> 2 #include <sdbusplus/async.hpp> 3 4 class Calculator : 5 public sdbusplus::aserver::net::poettering::Calculator<Calculator> 6 { 7 public: 8 explicit Calculator(sdbusplus::async::context& ctx) : 9 sdbusplus::aserver::net::poettering::Calculator<Calculator>( 10 ctx, "/net/poettering/calculator"), 11 manager(ctx, "/") 12 { 13 ctx.spawn(startup()); 14 } 15 16 auto get_property(owner_t) const 17 { 18 return "asdf"; 19 } 20 21 auto get_property(last_result_t) const 22 { 23 return 42; 24 } 25 26 private: 27 auto startup() -> sdbusplus::async::task<> 28 { 29 ctx.get_bus().request_name("net.poettering.Calculator"); 30 31 while (1) 32 { 33 using namespace std::literals; 34 co_await sdbusplus::async::sleep_for(ctx, 10s); 35 36 cleared(42); 37 } 38 co_return; 39 } 40 41 sdbusplus::server::manager_t manager; 42 }; 43 44 int main() 45 { 46 sdbusplus::async::context ctx; 47 [[maybe_unused]] Calculator c(ctx); 48 49 ctx.run(); 50 51 return 0; 52 } 53