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