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