History log of /openbmc/sdbusplus/src/async/context.cpp (Results 1 – 20 of 20)
Revision Date Author Comments
# e8e6631b 01-Dec-2023 Patrick Williams <patrick@stwcx.xyz>

async: context: use transfer instead of schedule

Later revisions of the stdexec proposal added a `transfer` method
that allows us to reduce 1 co_await.

Signed-off-by: Patrick Williams <patrick@stwc

async: context: use transfer instead of schedule

Later revisions of the stdexec proposal added a `transfer` method
that allows us to reduce 1 co_await.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: If43877a85254b5572cc2a3a1cacdf6b580870b5a

show more ...


# bbc181e3 16-Nov-2023 Patrick Williams <patrick@stwcx.xyz>

async: context: clean up TODO

The latest version of stdexec cleans up an issue we were seeing
that was marked with a TODO. Switch from a complicated task
structure back to the simple `task<>`.

Sig

async: context: clean up TODO

The latest version of stdexec cleans up an issue we were seeing
that was marked with a TODO. Switch from a complicated task
structure back to the simple `task<>`.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Ibe2a73b1e7d172f829308a12c88749db43354e83

show more ...


# 1ee60d6d 18-Aug-2023 Patrick Williams <patrick@stwcx.xyz>

async: context: add implicit conversion to bus_t

Many existing sdbusplus library calls expect a `bus_t`. Add an
implicit conversion to `bus_t&` so that a `context_t&` can be passed
into any functio

async: context: add implicit conversion to bus_t

Many existing sdbusplus library calls expect a `bus_t`. Add an
implicit conversion to `bus_t&` so that a `context_t&` can be passed
into any function that formerly accepted a `bus_t&`.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I791bf88d86ba5761a4d2fa9bf811b6e794b097af

show more ...


# 4a9e4221 18-Aug-2023 Patrick Williams <patrick@stwcx.xyz>

async: add context_ref class for CRTP patterns

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I6364f6f5a654ec0c628112637014ae2daed5d740


# 9c6ec9b3 23-Jun-2023 Patrick Williams <patrick@stwcx.xyz>

async: add is_sender type-aliases

The latest version of stdexec requires all sender types to include a
type alias `is_sender` (which their examples all set to `void`) or
else a unique overload of a

async: add is_sender type-aliases

The latest version of stdexec requires all sender types to include a
type alias `is_sender` (which their examples all set to `void`) or
else a unique overload of a stdexec template. Add the type alias to
all of our defined sender types.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I2229905703b0f9c360d0fa5f1ba6acffd1f22a02

show more ...


# 5d16a8ed 25-May-2023 Patrick Williams <patrick@stwcx.xyz>

async: context: remove pending_exception handling

With the move from scope to exec::async_scope there is no possibility
for pending-exceptions so clean up all the associated code.

Signed-off-by: Pa

async: context: remove pending_exception handling

With the move from scope to exec::async_scope there is no possibility
for pending-exceptions so clean up all the associated code.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I6f110d0641b9ba566e480f8e43eb90976e2b3c93

show more ...


# 97c31c82 25-May-2023 Patrick Williams <patrick@stwcx.xyz>

async: switch to stdexec async_scope

Use the `async_scope` implementation from stdexec instead of the
custom `scope` class here, which greatly reduces our own code and
also aligns better with the C+

async: switch to stdexec async_scope

Use the `async_scope` implementation from stdexec instead of the
custom `scope` class here, which greatly reduces our own code and
also aligns better with the C++ STL direction. The major changes are
around exception paths:

- Spawned tasks which end with an exception will now std::terminate,
so any task expected to throw should have an `upon_error` chain.

- Spawned tasks which are stopped will be no longer throw an
`UnexpectedStop` exception, so they should be chained with an
`upon_stopped` if this is important.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I4e0c85712652efa5b296b898dcc2b0026ba4c625

show more ...


# 91cb97b5 05-Apr-2023 Patrick Williams <patrick@stwcx.xyz>

async: change namespace for sync_wait

Upstream stdexec moved the sync_wait from the `stdexec::this_thread`
namespace directly into `stdexec`.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Cha

async: change namespace for sync_wait

Upstream stdexec moved the sync_wait from the `stdexec::this_thread`
namespace directly into `stdexec`.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I9a28b4c5920d0f9892ba466d919fd29f2397f64a

show more ...


# 5e7ef083 05-Jan-2023 Patrick Williams <patrick@stwcx.xyz>

stdexec: update to later commit

The upstream code has done some namespace changes. Point to a commit
in that timeframe and fix up the local usages in order to compile
successfully.

Signed-off-by:

stdexec: update to later commit

The upstream code has done some namespace changes. Point to a commit
in that timeframe and fix up the local usages in order to compile
successfully.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I5a21ccd0774ee5cd22d45c9a425e43560734a571

show more ...


# b8be599f 04-Jan-2023 Ed Tanous <edtanous@google.com>

Remove extra semi-colons

A couple functions had extra semi-colons, which clang -Weverything
flags. Remove them.

Change-Id: I2b44444c3184817dd0035c62b5ae114254457398
Signed-off-by: Ed Tanous <edtan

Remove extra semi-colons

A couple functions had extra semi-colons, which clang -Weverything
flags. Remove them.

Change-Id: I2b44444c3184817dd0035c62b5ae114254457398
Signed-off-by: Ed Tanous <edtanous@google.com>

show more ...


# 115e9b3d 23-Sep-2022 Patrick Williams <patrick@stwcx.xyz>

async: context: allow many exceptions

Allow many spawned tasks to throw exceptions and queue them up,
re-throwing them one-by-one from `context::run` calls. Similarly
enhance `context::scope` so th

async: context: allow many exceptions

Allow many spawned tasks to throw exceptions and queue them up,
re-throwing them one-by-one from `context::run` calls. Similarly
enhance `context::scope` so that many `context::empty` completions
can complete with error.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I8744e0a3b8b0663ebd5ca26db0f5943688afe62a

show more ...


# 10483c94 23-Sep-2022 Patrick Williams <patrick@stwcx.xyz>

async: context: allow run re-entrance

Switch the context call so that it can be re-entrant. A single call
to `run` will either:

1. Process until the context is successfully stopped.
2. An

async: context: allow run re-entrance

Switch the context call so that it can be re-entrant. A single call
to `run` will either:

1. Process until the context is successfully stopped.
2. An exception is raised from a spawned task.

If an exception is raised, it could be caught outside the run call
and then run called again.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Icd05df421a1f0592bd2390fbe8e21a16252eafed

show more ...


# 3c242ba4 23-Sep-2022 Patrick Williams <patrick@stwcx.xyz>

async: context: simplify run function

Since we already have a `spawn` function to add async tasks,
get rid of the special "startup" task send to run. Instead
users should pass the start up work to

async: context: simplify run function

Since we already have a `spawn` function to add async tasks,
get rid of the special "startup" task send to run. Instead
users should pass the start up work to spawn and call run with
no parameters.

Eventually this will allow us to exit the run-loop for any and all
exceptions from the async context and potentially allow a caller
to re-enter the `run` loop after handling the child exception.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Ia0e09a2493f0554538315d1d0c238aa11cb44e39

show more ...


# 4cfc284d 22-Sep-2022 Patrick Williams <patrick@stwcx.xyz>

async: handle exceptions and stops

Add support in `context` and `scope` to handle exceptions and stop
conditions:

* When an unhandled_stop occurs, turn it into an UnhandledStop
exception.
*

async: handle exceptions and stops

Add support in `context` and `scope` to handle exceptions and stop
conditions:

* When an unhandled_stop occurs, turn it into an UnhandledStop
exception.
* When a `scope`-spawned task throws an exception, save it and cause
`set_error` on the `scope::empty()`'s Receiver.
* When anything in the `context` completes with `set_error` propagate
that out to the caller of `context::run`.
* If multiple exceptions occur within a `scope`, terminate.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I25285f7ece5c0675864489bbe1345fa8e7afa70c

show more ...


# 78e436fe 21-Sep-2022 Patrick Williams <patrick@stwcx.xyz>

async: context: handle shutdown better

When the context has been requested to stop we don't actually want
to stop it until all work has completed. Work that is pending
could require the dbus/event

async: context: handle shutdown better

When the context has been requested to stop we don't actually want
to stop it until all work has completed. Work that is pending
could require the dbus/event to function properly so we need to keep
that running until that time. If we shutdown those too early, we
can end up with a spawned task which never completes because it is
relying on an event which is never processed.

In order to keep all of these straight, split the scope/stop_tokens
into two: pending and internal. Pending tasks are for those 'spawned'
due to the user requests and internal tasks are those maintained by the
context itself to aid in processing. Defer shutting down the
dbus/event handlers until all 'pending' work is completed.

Add a test-case which use to hang and now completes.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I399d065ae15b24ad3971c526c27b73757af14b34

show more ...


# c5b5ff57 21-Sep-2022 Patrick Williams <patrick@stwcx.xyz>

async: scope: add completion sender

Add a mechanism to await the completion of an async::scope,
equivalent to a 'join' on the spawned tasks it contains.

Signed-off-by: Patrick Williams <patrick@stw

async: scope: add completion sender

Add a mechanism to await the completion of an async::scope,
equivalent to a 'join' on the spawned tasks it contains.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I669680441704cdb59aa982d97bed610178c498b9

show more ...


# 0139cac7 20-Sep-2022 Patrick Williams <patrick@stwcx.xyz>

async: add scope

In order to be able to create multiple subtasks as a collection
and in order to make sure we keep good track of any tasks that
are created by the context, add a `scope` as a contain

async: add scope

In order to be able to create multiple subtasks as a collection
and in order to make sure we keep good track of any tasks that
are created by the context, add a `scope` as a container of subtasks.
This is partially modelled after the C++ P2519 proposal.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I6e99b2fa2829d80c320491991f7e038f122963a9

show more ...


# 435eb1bd 16-Sep-2022 Patrick Williams <patrick@stwcx.xyz>

async: add sleep_for sender

Sometimes it is useful to do the equivalent of
`std::this_thread::sleep_for` in a co-routine context. Add a
sender-based implementation to async.

Signed-off-by: Patrick

async: add sleep_for sender

Sometimes it is useful to do the equivalent of
`std::this_thread::sleep_for` in a co-routine context. Add a
sender-based implementation to async.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I9991eb40b7a1b12e61511f1200bc99fdcdbccf0a

show more ...


# 73e278b5 16-Sep-2022 Patrick Williams <patrick@stwcx.xyz>

async: context: support stopping the context

Up until this point, the async::context would run forever and have
no way of exiting the process, which isn't very useful. Add some
support for stop con

async: context: support stopping the context

Up until this point, the async::context would run forever and have
no way of exiting the process, which isn't very useful. Add some
support for stop conditions so that we can ask the context to stop
and cleanly exit.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Ia5967162fb103d4b4b0490d8cbbef12bdb361bac

show more ...


# 74187667 26-Aug-2022 Patrick Williams <patrick@stwcx.xyz>

async: add context support

In order to handle async operations, we need some kind of
'run-loop' around the sd_bus_wait/sd_bus_process process.
Define a 'context' to hold the bus and manage the run-l

async: add context support

In order to handle async operations, we need some kind of
'run-loop' around the sd_bus_wait/sd_bus_process process.
Define a 'context' to hold the bus and manage the run-loop.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I16099dd2e15809776827dd85327d950af3f8f5b2

show more ...