xref: /aosp_15_r20/external/pigweed/pw_async_basic/docs.rst (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker.. _module-pw_async_basic:
2*61c4878aSAndroid Build Coastguard Worker
3*61c4878aSAndroid Build Coastguard Worker================
4*61c4878aSAndroid Build Coastguard Workerpw_async_basic
5*61c4878aSAndroid Build Coastguard Worker================
6*61c4878aSAndroid Build Coastguard Worker
7*61c4878aSAndroid Build Coastguard WorkerThis module includes basic implementations of pw_async's Dispatcher and
8*61c4878aSAndroid Build Coastguard WorkerFakeDispatcher.
9*61c4878aSAndroid Build Coastguard Worker
10*61c4878aSAndroid Build Coastguard Worker---
11*61c4878aSAndroid Build Coastguard WorkerAPI
12*61c4878aSAndroid Build Coastguard Worker---
13*61c4878aSAndroid Build Coastguard Worker.. doxygenclass:: pw::async::BasicDispatcher
14*61c4878aSAndroid Build Coastguard Worker   :members:
15*61c4878aSAndroid Build Coastguard Worker
16*61c4878aSAndroid Build Coastguard Worker-----
17*61c4878aSAndroid Build Coastguard WorkerUsage
18*61c4878aSAndroid Build Coastguard Worker-----
19*61c4878aSAndroid Build Coastguard WorkerFirst, set the following GN variables:
20*61c4878aSAndroid Build Coastguard Worker
21*61c4878aSAndroid Build Coastguard Worker.. code-block::
22*61c4878aSAndroid Build Coastguard Worker
23*61c4878aSAndroid Build Coastguard Worker   pw_async_TASK_BACKEND="$dir_pw_async_basic:task"
24*61c4878aSAndroid Build Coastguard Worker   pw_async_FAKE_DISPATCHER_BACKEND="$dir_pw_async_basic:fake_dispatcher"
25*61c4878aSAndroid Build Coastguard Worker
26*61c4878aSAndroid Build Coastguard Worker
27*61c4878aSAndroid Build Coastguard WorkerNext, create a target that depends on ``//pw_async_basic:dispatcher``:
28*61c4878aSAndroid Build Coastguard Worker
29*61c4878aSAndroid Build Coastguard Worker.. code-block::
30*61c4878aSAndroid Build Coastguard Worker
31*61c4878aSAndroid Build Coastguard Worker   pw_executable("hello_world") {
32*61c4878aSAndroid Build Coastguard Worker     sources = [ "hello_world.cc" ]
33*61c4878aSAndroid Build Coastguard Worker     deps = [
34*61c4878aSAndroid Build Coastguard Worker       "//pw_async_basic:dispatcher",
35*61c4878aSAndroid Build Coastguard Worker     ]
36*61c4878aSAndroid Build Coastguard Worker   }
37*61c4878aSAndroid Build Coastguard Worker
38*61c4878aSAndroid Build Coastguard WorkerNext, construct and use a ``BasicDispatcher``.
39*61c4878aSAndroid Build Coastguard Worker
40*61c4878aSAndroid Build Coastguard Worker.. code-block:: cpp
41*61c4878aSAndroid Build Coastguard Worker
42*61c4878aSAndroid Build Coastguard Worker   #include "pw_async_basic/dispatcher.h"
43*61c4878aSAndroid Build Coastguard Worker
44*61c4878aSAndroid Build Coastguard Worker   void DelayedPrint(pw::async::Dispatcher& dispatcher) {
45*61c4878aSAndroid Build Coastguard Worker     dispatcher.PostAfter([](auto&){
46*61c4878aSAndroid Build Coastguard Worker        printf("hello world\n");
47*61c4878aSAndroid Build Coastguard Worker     }, 5s);
48*61c4878aSAndroid Build Coastguard Worker   }
49*61c4878aSAndroid Build Coastguard Worker
50*61c4878aSAndroid Build Coastguard Worker   int main() {
51*61c4878aSAndroid Build Coastguard Worker     pw::async::BasicDispatcher dispatcher;
52*61c4878aSAndroid Build Coastguard Worker     DelayedPrint(dispatcher);
53*61c4878aSAndroid Build Coastguard Worker     dispatcher.RunFor(10s);
54*61c4878aSAndroid Build Coastguard Worker     return 0;
55*61c4878aSAndroid Build Coastguard Worker   }
56*61c4878aSAndroid Build Coastguard Worker
57*61c4878aSAndroid Build Coastguard Worker-----------
58*61c4878aSAndroid Build Coastguard WorkerSize Report
59*61c4878aSAndroid Build Coastguard Worker-----------
60*61c4878aSAndroid Build Coastguard Worker.. include:: docs_size_report
61