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(last_result_t) const 17 { 18 return 42; 19 } 20 21 bool set_property(last_result_t, auto) 22 { 23 return false; 24 } 25 26 private: 27 auto startup() -> sdbusplus::async::task<> 28 { 29 ctx.get_bus().request_name("net.poettering.Calculator"); 30 31 status(State::Error); 32 33 while (1) 34 { 35 using namespace std::literals; 36 co_await sdbusplus::async::sleep_for(ctx, 10s); 37 38 cleared(42); 39 } 40 co_return; 41 } 42 43 sdbusplus::server::manager_t manager; 44 }; 45 46 int main() 47 { 48 sdbusplus::async::context ctx; 49 [[maybe_unused]] Calculator c(ctx); 50 51 ctx.run(); 52 53 return 0; 54 } 55