History log of /openbmc/sdbusplus/test/async/ (Results 1 – 25 of 27)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
540ad05922-Dec-2025 Jayanth Othayoth <ojayanth@gmail.com>

clang-tidy: remove unused private fields

Dropped unused members `fd` and `wd` from mutex.cpp to resolve
-Wunused-private-field errors under -Werror. No functional changes.

Fixed below errors.
'''
.

clang-tidy: remove unused private fields

Dropped unused members `fd` and `wd` from mutex.cpp to resolve
-Wunused-private-field errors under -Werror. No functional changes.

Fixed below errors.
'''
../test/async/mutex.cpp:94:9: error: private field 'fd' is not used [-Werror,-Wunused-private-field]
94 | int fd = -1;
| ^
../test/async/mutex.cpp:95:9: error: private field 'wd' is not used [-Werror,-Wunused-private-field]
95 | int wd = -1;
'''

Change-Id: If8079277c6e1be2760de8896997d7da4df6e1a98
Signed-off-by: Jayanth Othayoth <ojayanth@gmail.com>

show more ...

45d0406022-Dec-2025 Jayanth Othayoth <ojayanth@gmail.com>

clang-tidy: fix lax exception spec in fixture

Explicitly declare MutexTest destructor as `noexcept override` to match
::testing::Test. This resolves Clang error about exception specification
being m

clang-tidy: fix lax exception spec in fixture

Explicitly declare MutexTest destructor as `noexcept override` to match
::testing::Test. This resolves Clang error about exception specification
being more lax than the base under -Werror. No functional changes.

Fixed below errors
'''
../test/async/mutex.cpp:12:7: error: exception specification of overriding function
is more lax than base version
12 | class MutexTest : public ::testing::Test
'''

Change-Id: I0b3d0775ecdda4408e794ff4220dd564595b54f6
Signed-off-by: Jayanth Othayoth <ojayanth@gmail.com>

show more ...

2cd25e6423-Oct-2025 Alexander Hansen <alexander.hansen@9elements.com>

test: split up long-running tests

gtests runs testcases sequentially as part of a test suite which is
causing long test runs. Split up the tests into separate files to
optimize test run duration.

T

test: split up long-running tests

gtests runs testcases sequentially as part of a test suite which is
causing long test runs. Split up the tests into separate files to
optimize test run duration.

Test suite definition is done via `suite.hpp`/`suite.cpp`.

There is a tradeoff here since the test folder structure now does not
directly mirror the source folder structure anymore. The folder name
is chosen to clarify which implementation file is being tested.

Timeouts inside testcases are not touched, it is assumed these were
chosen correctly.

In case of fdio_timed there is dependency on a folder, which is made
unique via `getpid()` call to avoid races.

Command: `time ninja -C build test`

Before: (as of current master branch, commit
`c6fee5a94bbb4b4fbb6212942f0f2cfa3049c255`)
```
real 0m18.581s
user 0m9.977s
sys 0m5.494s
```

After:
```
real 0m6.430s
user 0m10.021s
sys 0m5.501s
```

Change-Id: I2ba096cb8f9d8ffcc146448d22b7e75a1c25d103
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>

show more ...

bd04c3b207-Jul-2025 Jagpal Singh Gill <paligill@gmail.com>

add support for async mutex

Add support for async mutex for synchronizing coroutines/tasks using
sender receiver framework. Also, add lock_guard support which provides a
RAII wrapper for mutex to ow

add support for async mutex

Add support for async mutex for synchronizing coroutines/tasks using
sender receiver framework. Also, add lock_guard support which provides a
RAII wrapper for mutex to own it for the duration of a scoped block.

Tested: Add Unit Test using gtest
```
1/1 test_async_mutex OK 2.01s

Ok: 1
Expected Fail: 0
Fail: 0
Unexpected Pass: 0
Skipped: 0
Timeout: 0
```

Change-Id: I691528885a94b9cf55d4b7f2fb0c1e0e6d0ab84f
Signed-off-by: Jagpal Singh Gill <paligill@gmail.com>
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>

show more ...

5b54325122-Jul-2025 Jagpal Singh Gill <paligill@gmail.com>

add support for timed fdio

For certain operations such as reading and writing to a fd for request
response flows, the fd needs to have a timeout to avoid everlasting
hangs in case of a unresponsive

add support for timed fdio

For certain operations such as reading and writing to a fd for request
response flows, the fd needs to have a timeout to avoid everlasting
hangs in case of a unresponsive responder. To support this, the fdio has
been extended to add timeout support by throwing an exception in case of
timeout.

Tested: Unit Test
```
1/1 test_async_fdio_timed OK 10.03s

Ok: 1
Expected Fail: 0
Fail: 0
Unexpected Pass: 0
Skipped: 0
Timeout: 0
```

Change-Id: Ib219e4a4c55125785e6c1571488e445ba3379244
Signed-off-by: Jagpal Singh Gill <paligill@gmail.com>

show more ...


/openbmc/sdbusplus/include/sdbusplus/asio/connection.hpp
/openbmc/sdbusplus/include/sdbusplus/asio/object_server.hpp
/openbmc/sdbusplus/include/sdbusplus/async/fdio.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__awaitable.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__concepts.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__connect_awaitable.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__domain.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__meta.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__ranges.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__schedulers.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__senders.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__senders_core.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__tag_invoke.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/functional.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/sequence_senders.hpp
/openbmc/sdbusplus/include/sdbusplus/message/append.hpp
/openbmc/sdbusplus/include/sdbusplus/message/read.hpp
/openbmc/sdbusplus/include/sdbusplus/utility/make_dbus_args_tuple.hpp
/openbmc/sdbusplus/meson.build
/openbmc/sdbusplus/src/async/fdio.cpp
fdio_timed.cpp
/openbmc/sdbusplus/test/meson.build
/openbmc/sdbusplus/test/message/append.cpp
/openbmc/sdbusplus/test/utility/make_dbus_args_tuple.cpp
/openbmc/sdbusplus/tools/README.md
/openbmc/sdbusplus/tools/pyproject.toml
bc13997408-Jul-2025 Patrick Williams <patrick@stwcx.xyz>

watchdog: add support for systemd watchdog

Add interfaces and handling for systemd watchdog petting.

Systemd service files can specify a watchdog timeout and systemd will
expect the application to

watchdog: add support for systemd watchdog

Add interfaces and handling for systemd watchdog petting.

Systemd service files can specify a watchdog timeout and systemd will
expect the application to periodically poke a software watchdog, or
else the service will be restarted. This is enabled with the
'WatchdogSec=' service file directive. Add primitives for
interacting with the watchdog APIs.

Enable automatic support in the `async::context` for this watchdog
handling, such that if the watchdog is required (by checking
sd_watchdog_enabled) the daemon will automatically pet at the
appropriate rate, assuming that the `async::context` is functioning
correctly.

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

show more ...


/openbmc/sdbusplus/.clang-format
/openbmc/sdbusplus/OWNERS
/openbmc/sdbusplus/example/asio-example.cpp
/openbmc/sdbusplus/example/calculator-client.cpp
/openbmc/sdbusplus/example/coroutine-example.cpp
/openbmc/sdbusplus/example/gen/meson.build
/openbmc/sdbusplus/example/gen/net/poettering/Calculator/meson.build
/openbmc/sdbusplus/example/gen/net/poettering/meson.build
/openbmc/sdbusplus/example/gen/regenerate-meson
/openbmc/sdbusplus/example/meson.build
/openbmc/sdbusplus/include/sdbusplus/asio/connection.hpp
/openbmc/sdbusplus/include/sdbusplus/asio/object_server.hpp
/openbmc/sdbusplus/include/sdbusplus/asio/property.hpp
/openbmc/sdbusplus/include/sdbusplus/async.hpp
/openbmc/sdbusplus/include/sdbusplus/async/match.hpp
/openbmc/sdbusplus/include/sdbusplus/async/server.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__awaitable.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__concepts.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__domain.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__let.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__meta.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__ranges.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__schedulers.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__sender_adaptor_closure.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__senders.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__senders_core.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__tag_invoke.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__transform_sender.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__utility.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/any_sender_of.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/at_coroutine_exit.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/coroutine.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/functional.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/sequence_senders.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/stop_token.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/task.hpp
/openbmc/sdbusplus/include/sdbusplus/bus.hpp
/openbmc/sdbusplus/include/sdbusplus/message.hpp
/openbmc/sdbusplus/include/sdbusplus/message/append.hpp
/openbmc/sdbusplus/include/sdbusplus/message/read.hpp
/openbmc/sdbusplus/include/sdbusplus/message/types.hpp
/openbmc/sdbusplus/include/sdbusplus/sdbus.hpp
/openbmc/sdbusplus/include/sdbusplus/sdbuspp_support/event.hpp
/openbmc/sdbusplus/include/sdbusplus/server/transaction.hpp
/openbmc/sdbusplus/include/sdbusplus/test/sdbus_mock.hpp
/openbmc/sdbusplus/include/sdbusplus/utility/container_traits.hpp
/openbmc/sdbusplus/include/sdbusplus/utility/memory.hpp
/openbmc/sdbusplus/include/sdbusplus/utility/type_traits.hpp
/openbmc/sdbusplus/include/sdbusplus/vtable.hpp
/openbmc/sdbusplus/meson.build
/openbmc/sdbusplus/src/async/context.cpp
/openbmc/sdbusplus/src/bus.cpp
watchdog.cpp
/openbmc/sdbusplus/test/gen/meson.build
/openbmc/sdbusplus/test/gen/regenerate-meson
/openbmc/sdbusplus/test/gen/server/Test/meson.build
/openbmc/sdbusplus/test/gen/server/Test2/meson.build
/openbmc/sdbusplus/test/gen/server/Test3/meson.build
/openbmc/sdbusplus/test/gen/server/meson.build
/openbmc/sdbusplus/test/gen/test_aserver_emit_interfaces_added_signal.cpp
/openbmc/sdbusplus/test/gen/test_aserver_multiple_interfaces.cpp
/openbmc/sdbusplus/test/gen/test_aserver_no_uninitialized_value_constructor.cpp
/openbmc/sdbusplus/test/gen/test_server_no_uninitialized_value_constructor.cpp
/openbmc/sdbusplus/test/meson.build
/openbmc/sdbusplus/test/message/append.cpp
/openbmc/sdbusplus/test/message/read.cpp
/openbmc/sdbusplus/test/vtable/vtable.cpp
/openbmc/sdbusplus/test/yaml/server/Test2.interface.yaml
/openbmc/sdbusplus/test/yaml/server/Test3.interface.yaml
/openbmc/sdbusplus/tools/meson.build
/openbmc/sdbusplus/tools/sdbus++-gen-meson
/openbmc/sdbusplus/tools/sdbusplus/event.py
/openbmc/sdbusplus/tools/sdbusplus/main.py
/openbmc/sdbusplus/tools/sdbusplus/namedelement.py
/openbmc/sdbusplus/tools/sdbusplus/property.py
/openbmc/sdbusplus/tools/sdbusplus/templates/event.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.aserver.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.client.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.common.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.server.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.aserver.callback.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/signal.aserver.emit.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/signal.prototype.hpp.mako
36137e0918-Dec-2024 Patrick Williams <patrick@stwcx.xyz>

clang-format: re-format for clang-19

clang-format-19 isn't compatible with the clang-format-18 output, so we
need to reformat the code with the latest version. A few parameters
in clang-tidy have b

clang-format: re-format for clang-19

clang-format-19 isn't compatible with the clang-format-18 output, so we
need to reformat the code with the latest version. A few parameters
in clang-tidy have been deprecated, so adjust the style file
accordingly.

See Ie2f6eb3b043f2d655c9df806815afd7971fd0947 for updated style.
See I88192b41ab7a95599a90915013579608af7bc56f for clang-19 enablement.

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

show more ...


/openbmc/sdbusplus/.clang-format
/openbmc/sdbusplus/example/calculator-aserver.cpp
/openbmc/sdbusplus/include/sdbusplus/async/callback.hpp
/openbmc/sdbusplus/include/sdbusplus/async/context.hpp
/openbmc/sdbusplus/include/sdbusplus/async/fdio.hpp
/openbmc/sdbusplus/include/sdbusplus/async/match.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__awaitable.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__basic_sender.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__bulk.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__config.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__connect_awaitable.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__continue_on.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__continues_on.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__domain.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__env.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__execution_fwd.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__intrusive_mpsc_queue.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__intrusive_ptr.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__intrusive_queue.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__intrusive_slist.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__let.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__manual_lifetime.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__meta.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__on.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__operation_states.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__p2300.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__read_env.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__receivers.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__schedule_from.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__schedulers.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__sender_adaptor_closure.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__senders.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__shared.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__spin_loop_pause.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__split.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__start_on.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__starts_on.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__sync_wait.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__transfer_just.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__transform_sender.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__tuple.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__type_traits.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__variant.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__when_all.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__with_awaitable_senders.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/any_sender_of.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/async_scope.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/at_coroutine_exit.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/commit.info
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/coroutine.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/execution.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/functional.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/sequence_senders.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/stop_token.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/task.hpp
/openbmc/sdbusplus/include/sdbusplus/async/timer.hpp
/openbmc/sdbusplus/include/sdbusplus/message/native_types.hpp
/openbmc/sdbusplus/include/sdbusplus/utility/container_traits.hpp
/openbmc/sdbusplus/src/async/context.cpp
/openbmc/sdbusplus/src/async/fdio.cpp
context.cpp
fdio.cpp
4638a2e906-Dec-2024 Jayanth Othayoth <ojayanth@gmail.com>

clang-tidy: Fix exception specification mismatch

The following error was reported during clang-tidy enablement due to
the exception specification of the overriding function being more lax
than the b

clang-tidy: Fix exception specification mismatch

The following error was reported during clang-tidy enablement due to
the exception specification of the overriding function being more lax
than the base version. This fix ensures that the exception
specification matches the base class destructor in gtest::Test.

'''
./test/async/fdio.cpp:30:5:
error: exception specification of overriding function is more lax than base version
30 | ~FdioTest() override
/usr/local/include/gtest/gtest.h:247:11: note: overridden virtual function is here
247 | virtual ~Test();
'''

Tested: Verified build and unit testing.

Change-Id: I5c016fed60afddb8ceda6f8c0d5f97d660a015f7
Signed-off-by: Jayanth Othayoth <ojayanth@gmail.com>

show more ...

2a12ae1223-Oct-2024 Jagpal Singh Gill <paligill@gmail.com>

add async fd sender receiver for coroutines

Add async sender receiver for file descriptor based events. The user of
the async file descriptor needs to initialize a fdio instance and then
call next()

add async fd sender receiver for coroutines

Add async sender receiver for file descriptor based events. The user of
the async file descriptor needs to initialize a fdio instance and then
call next() to get each new event for the fd.

Tested:
```
> meson test -C builddir test_async_fdio
ninja: Entering directory `/host/repos/sdbusplus/builddir'
ninja: no work to do.
1/1 test_async_fdio OK 6.01s

Ok: 1
Expected Fail: 0
Fail: 0
Unexpected Pass: 0
Skipped: 0
Timeout: 0

Full log written to /host/repos/sdbusplus/builddir/meson-logs/testlog.txt
```

Change-Id: I1b4f16963e6096f30484c4a6df471e64ed24448b
Signed-off-by: Jagpal Singh Gill <paligill@gmail.com>

show more ...


/openbmc/sdbusplus/.gitignore
/openbmc/sdbusplus/example/calculator-aserver.cpp
/openbmc/sdbusplus/example/calculator-server.cpp
/openbmc/sdbusplus/example/gen/meson.build
/openbmc/sdbusplus/example/gen/net/poettering/Calculator/meson.build
/openbmc/sdbusplus/example/gen/net/poettering/meson.build
/openbmc/sdbusplus/example/meson.build
/openbmc/sdbusplus/example/yaml/net/poettering/Calculator.events.yaml
/openbmc/sdbusplus/example/yaml/net/poettering/Calculator.interface.yaml
/openbmc/sdbusplus/include/sdbusplus/asio/connection.hpp
/openbmc/sdbusplus/include/sdbusplus/asio/object_server.hpp
/openbmc/sdbusplus/include/sdbusplus/async.hpp
/openbmc/sdbusplus/include/sdbusplus/async/context.hpp
/openbmc/sdbusplus/include/sdbusplus/async/fdio.hpp
/openbmc/sdbusplus/include/sdbusplus/bus.hpp
/openbmc/sdbusplus/include/sdbusplus/exception.hpp
/openbmc/sdbusplus/include/sdbusplus/message.hpp
/openbmc/sdbusplus/include/sdbusplus/message/types.hpp
/openbmc/sdbusplus/include/sdbusplus/sdbus.hpp
/openbmc/sdbusplus/include/sdbusplus/sdbuspp_support/event.hpp
/openbmc/sdbusplus/include/sdbusplus/sdbuspp_support/server.hpp
/openbmc/sdbusplus/include/sdbusplus/server/transaction.hpp
/openbmc/sdbusplus/include/sdbusplus/test/sdbus_mock.hpp
/openbmc/sdbusplus/include/sdbusplus/utility/consteval_string.hpp
/openbmc/sdbusplus/meson.build
/openbmc/sdbusplus/src/async/fdio.cpp
/openbmc/sdbusplus/src/bus.cpp
/openbmc/sdbusplus/src/exception.cpp
/openbmc/sdbusplus/src/server/transaction.cpp
/openbmc/sdbusplus/subprojects/nlohmann_json.wrap
fdio.cpp
/openbmc/sdbusplus/test/gen/meson.build
/openbmc/sdbusplus/test/meson.build
/openbmc/sdbusplus/test/message/read.cpp
/openbmc/sdbusplus/tools/meson.build
/openbmc/sdbusplus/tools/sdbus++-gen-meson
/openbmc/sdbusplus/tools/sdbusplus/__init__.py
/openbmc/sdbusplus/tools/sdbusplus/error.py
/openbmc/sdbusplus/tools/sdbusplus/event.py
/openbmc/sdbusplus/tools/sdbusplus/interface.py
/openbmc/sdbusplus/tools/sdbusplus/main.py
/openbmc/sdbusplus/tools/sdbusplus/namedelement.py
/openbmc/sdbusplus/tools/sdbusplus/property.py
/openbmc/sdbusplus/tools/sdbusplus/schemas/events.schema.yaml
/openbmc/sdbusplus/tools/sdbusplus/templates/event.cpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/event.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/event.md.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/events.cpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/events.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/events.md.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/method.aserver.callback.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/method.aserver.typeid.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/method.prototype.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.aserver.callback.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.server.cpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/signal.prototype.hpp.mako
/openbmc/sdbusplus/tools/setup.py
06f265f616-Aug-2024 Patrick Williams <patrick@stwcx.xyz>

clang-format: re-format for clang-18

clang-format-18 isn't compatible with the clang-format-17 output, so we
need to reformat the code with the latest version. The way clang-18
handles lambda forma

clang-format: re-format for clang-18

clang-format-18 isn't compatible with the clang-format-17 output, so we
need to reformat the code with the latest version. The way clang-18
handles lambda formatting also changed, so we have made changes to the
organization default style format to better handle lambda formatting.

See I5e08687e696dd240402a2780158664b7113def0e for updated style.
See Iea0776aaa7edd483fa395e23de25ebf5a6288f71 for clang-18 enablement.

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

show more ...


/openbmc/sdbusplus/.clang-format
/openbmc/sdbusplus/OWNERS
/openbmc/sdbusplus/docs/yaml/error.md
/openbmc/sdbusplus/docs/yaml/interface.md
/openbmc/sdbusplus/example/asio-example.cpp
/openbmc/sdbusplus/example/calculator-aserver.cpp
/openbmc/sdbusplus/example/calculator-client.cpp
/openbmc/sdbusplus/example/calculator-server.cpp
/openbmc/sdbusplus/example/coroutine-example.cpp
/openbmc/sdbusplus/example/gen/meson.build
/openbmc/sdbusplus/example/gen/net/poettering/Calculator/meson.build
/openbmc/sdbusplus/example/get-all-properties.cpp
/openbmc/sdbusplus/example/list-users.cpp
/openbmc/sdbusplus/example/meson.build
/openbmc/sdbusplus/example/register-property.cpp
/openbmc/sdbusplus/example/yaml/net/poettering/Calculator.interface.yaml
/openbmc/sdbusplus/include/sdbusplus/asio/connection.hpp
/openbmc/sdbusplus/include/sdbusplus/asio/detail/async_send_handler.hpp
/openbmc/sdbusplus/include/sdbusplus/asio/object_server.hpp
/openbmc/sdbusplus/include/sdbusplus/asio/property.hpp
/openbmc/sdbusplus/include/sdbusplus/asio/sd_event.hpp
/openbmc/sdbusplus/include/sdbusplus/async/callback.hpp
/openbmc/sdbusplus/include/sdbusplus/async/client.hpp
/openbmc/sdbusplus/include/sdbusplus/async/context.hpp
/openbmc/sdbusplus/include/sdbusplus/async/execution.hpp
/openbmc/sdbusplus/include/sdbusplus/async/match.hpp
/openbmc/sdbusplus/include/sdbusplus/async/proxy.hpp
/openbmc/sdbusplus/include/sdbusplus/async/server.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__as_awaitable.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__awaitable.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__basic_sender.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__bulk.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__completion_signatures.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__concepts.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__config.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__connect_awaitable.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__continue_on.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__cpo.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__debug.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__diagnostics.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__domain.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__ensure_started.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__env.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__execute.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__execution_fwd.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__inline_scheduler.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__into_variant.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__intrusive_mpsc_queue.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__intrusive_ptr.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__intrusive_queue.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__intrusive_slist.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__just.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__let.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__meta.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__on.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__operation_states.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__optional.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__p2300.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__ranges.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__read_env.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__receiver_adaptor.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__receiver_ref.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__receivers.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__run_loop.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__schedule_from.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__schedulers.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__scope.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__sender_adaptor_closure.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__sender_introspection.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__senders.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__senders_core.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__shared.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__spin_loop_pause.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__split.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__start_detached.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__start_on.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__stop_token.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__stopped_as_error.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__stopped_as_optional.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__submit.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__sync_wait.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__tag_invoke.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__then.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__transfer_just.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__transform_completion_signatures.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__transform_sender.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__tuple.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__type_traits.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__upon_error.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__upon_stopped.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__utility.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__variant.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__when_all.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__with_awaitable_senders.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__write_env.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/any_sender_of.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/async_scope.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/at_coroutine_exit.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/commit.info
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/concepts.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/coroutine.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/env.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/execution.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/functional.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/import
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/inline_scheduler.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/sequence_senders.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/stop_token.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/task.hpp
/openbmc/sdbusplus/include/sdbusplus/async/task.hpp
/openbmc/sdbusplus/include/sdbusplus/async/timer.hpp
/openbmc/sdbusplus/include/sdbusplus/bus.hpp
/openbmc/sdbusplus/include/sdbusplus/bus/match.hpp
/openbmc/sdbusplus/include/sdbusplus/exception.hpp
/openbmc/sdbusplus/include/sdbusplus/message.hpp
/openbmc/sdbusplus/include/sdbusplus/message/append.hpp
/openbmc/sdbusplus/include/sdbusplus/message/native_types.hpp
/openbmc/sdbusplus/include/sdbusplus/message/read.hpp
/openbmc/sdbusplus/include/sdbusplus/message/types.hpp
/openbmc/sdbusplus/include/sdbusplus/sdbus.hpp
/openbmc/sdbusplus/include/sdbusplus/server/README.md
/openbmc/sdbusplus/include/sdbusplus/server/interface.hpp
/openbmc/sdbusplus/include/sdbusplus/server/manager.hpp
/openbmc/sdbusplus/include/sdbusplus/slot.hpp
/openbmc/sdbusplus/include/sdbusplus/test/sdbus_mock.hpp
/openbmc/sdbusplus/include/sdbusplus/timer.hpp
/openbmc/sdbusplus/include/sdbusplus/unpack_properties.hpp
/openbmc/sdbusplus/include/sdbusplus/utility/container_traits.hpp
/openbmc/sdbusplus/include/sdbusplus/utility/dedup_variant.hpp
/openbmc/sdbusplus/include/sdbusplus/utility/type_traits.hpp
/openbmc/sdbusplus/include/sdbusplus/vtable.hpp
/openbmc/sdbusplus/meson.build
/openbmc/sdbusplus/meson.options
/openbmc/sdbusplus/src/async/context.cpp
/openbmc/sdbusplus/src/async/match.cpp
/openbmc/sdbusplus/src/bus/match.cpp
/openbmc/sdbusplus/src/event.cpp
/openbmc/sdbusplus/src/exception.cpp
/openbmc/sdbusplus/src/message/native_types.cpp
/openbmc/sdbusplus/src/server/interface.cpp
context.cpp
/openbmc/sdbusplus/test/bus/match.cpp
/openbmc/sdbusplus/test/exception/sdbus_error.cpp
/openbmc/sdbusplus/test/gen/meson.build
/openbmc/sdbusplus/test/gen/server/Test/meson.build
/openbmc/sdbusplus/test/meson.build
/openbmc/sdbusplus/test/message/call.cpp
/openbmc/sdbusplus/test/message/read.cpp
/openbmc/sdbusplus/test/timer.cpp
/openbmc/sdbusplus/test/unpack_properties.cpp
/openbmc/sdbusplus/test/vtable/vtable.cpp
/openbmc/sdbusplus/tools/meson.build
/openbmc/sdbusplus/tools/sdbus++-gen-meson
/openbmc/sdbusplus/tools/sdbusplus/error.py
/openbmc/sdbusplus/tools/sdbusplus/interface.py
/openbmc/sdbusplus/tools/sdbusplus/main.py
/openbmc/sdbusplus/tools/sdbusplus/namedelement.py
/openbmc/sdbusplus/tools/sdbusplus/path.py
/openbmc/sdbusplus/tools/sdbusplus/property.py
/openbmc/sdbusplus/tools/sdbusplus/servicename.py
/openbmc/sdbusplus/tools/sdbusplus/templates/error.cpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/error.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.aserver.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.client.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.common.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.server.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/method.aserver.callback.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/method.aserver.tag.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/method.aserver.typeid.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/method.aserver.vtable.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/method.client.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.aserver.callback.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.aserver.get.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.aserver.set.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.aserver.tag.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.aserver.typeid.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.aserver.value.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.aserver.vtable.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.client.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/signal.aserver.emit.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/signal.aserver.typeid.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/signal.aserver.vtable.hpp.mako
97c31c8225-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 ...


/openbmc/sdbusplus/.clang-format
/openbmc/sdbusplus/example/asio-example.cpp
/openbmc/sdbusplus/example/coroutine-example.cpp
/openbmc/sdbusplus/example/get-all-properties.cpp
/openbmc/sdbusplus/example/register-property.cpp
/openbmc/sdbusplus/include/sdbusplus/asio/connection.hpp
/openbmc/sdbusplus/include/sdbusplus/asio/property.hpp
/openbmc/sdbusplus/include/sdbusplus/asio/sd_event.hpp
/openbmc/sdbusplus/include/sdbusplus/async.hpp
/openbmc/sdbusplus/include/sdbusplus/async/client.hpp
/openbmc/sdbusplus/include/sdbusplus/async/context.hpp
/openbmc/sdbusplus/include/sdbusplus/async/execution.hpp
/openbmc/sdbusplus/include/sdbusplus/async/proxy.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__concepts.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__config.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__execution_fwd.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__force_include.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__intrusive_ptr.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__meta.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__p2300.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__scope.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__type_traits.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/any_sender_of.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/async_scope.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/at_coroutine_exit.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/commit.info
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/concepts.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/coroutine.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/env.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/execution.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/functional.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/import
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/inline_scheduler.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/stop_token.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/task.hpp
/openbmc/sdbusplus/include/sdbusplus/server/object.hpp
/openbmc/sdbusplus/include/sdbusplus/timer.hpp
/openbmc/sdbusplus/include/sdbusplus/unpack_properties.hpp
/openbmc/sdbusplus/include/sdbusplus/utility/memory.hpp
/openbmc/sdbusplus/meson.build
/openbmc/sdbusplus/src/async/context.cpp
/openbmc/sdbusplus/src/async/match.cpp
context.cpp
/openbmc/sdbusplus/test/bus/match.cpp
/openbmc/sdbusplus/test/exception/sdbus_error.cpp
/openbmc/sdbusplus/test/message/call.cpp
/openbmc/sdbusplus/test/unpack_properties.cpp
/openbmc/sdbusplus/tools/meson.build
/openbmc/sdbusplus/tools/sdbusplus/interface.py
/openbmc/sdbusplus/tools/sdbusplus/method.py
/openbmc/sdbusplus/tools/sdbusplus/property.py
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.client.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.server.cpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/method.prototype.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/method.server.vtable.cpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.client.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.server.cpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.server.vtable.cpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/signal.prototype.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/signal.server.vtable.cpp.mako
9949a16908-May-2023 Patrick Williams <patrick@stwcx.xyz>

async: scope: forward exception correctly

There were test cases to cover an unhandled exception thrown by a
spawned task in the async::context, but I observed some cases where
this exception was sil

async: scope: forward exception correctly

There were test cases to cover an unhandled exception thrown by a
spawned task in the async::context, but I observed some cases where
this exception was silently dropped. The test cases only covered
spawned Senders and not spawned Coroutines. The underlying cause
of this was that in some cases the exception was deleted prior to
it being forwarded along to the async::context's scope.

When a task completes in the async::scope, the operational state
holding the task has to be deleted. There needs to be a careful
handshake to be able to trigger the scope while at the same time
deleting the object which is being executed (the scope_receiver),
so that there is not a memory leak. As part of this, if the task
completed with an unhandled exception, the complete function is
suppose to forward the exception to the scope. It is quite likely
that the exception is actually held by the operational state of the
task, which is going to be deleted prior to triggering the scope, so
we need to save this exception prior to the deletion.

Add a specific test case to cover the throwing coroutine, which
failed prior to this fix.

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

show more ...


/openbmc/sdbusplus/example/calculator-client.cpp
/openbmc/sdbusplus/example/calculator-server.cpp
/openbmc/sdbusplus/example/gen/meson.build
/openbmc/sdbusplus/example/gen/net/poettering/Calculator/meson.build
/openbmc/sdbusplus/example/meson.build
/openbmc/sdbusplus/include/sdbusplus/asio/object_server.hpp
/openbmc/sdbusplus/include/sdbusplus/async/callback.hpp
/openbmc/sdbusplus/include/sdbusplus/async/client.hpp
/openbmc/sdbusplus/include/sdbusplus/async/context.hpp
/openbmc/sdbusplus/include/sdbusplus/async/match.hpp
/openbmc/sdbusplus/include/sdbusplus/async/proxy.hpp
/openbmc/sdbusplus/include/sdbusplus/async/scope.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__config.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__intrusive_ptr.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__meta.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__p2300.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__scope.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/any_sender_of.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/at_coroutine_exit.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/commit.info
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/concepts.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/coroutine.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/execution.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/functional.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/import
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/inline_scheduler.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/scope.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/stop_token.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/task.hpp
/openbmc/sdbusplus/include/sdbusplus/async/timer.hpp
/openbmc/sdbusplus/include/sdbusplus/bus.hpp
/openbmc/sdbusplus/include/sdbusplus/event.hpp
/openbmc/sdbusplus/include/sdbusplus/server/object.hpp
/openbmc/sdbusplus/src/event.cpp
context.cpp
/openbmc/sdbusplus/test/bus/exception.cpp
/openbmc/sdbusplus/test/gen/meson.build
/openbmc/sdbusplus/test/gen/server/Test/meson.build
/openbmc/sdbusplus/test/meson.build
/openbmc/sdbusplus/tools/meson.build
/openbmc/sdbusplus/tools/sdbus++-gen-meson
/openbmc/sdbusplus/tools/sdbusplus/interface.py
/openbmc/sdbusplus/tools/sdbusplus/main.py
/openbmc/sdbusplus/tools/sdbusplus/method.py
/openbmc/sdbusplus/tools/sdbusplus/namedelement.py
/openbmc/sdbusplus/tools/sdbusplus/property.py
/openbmc/sdbusplus/tools/sdbusplus/signal.py
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.client.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.common.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.server.cpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.server.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/method.client.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/method.prototype.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.client.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.prototype.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/signal.prototype.hpp.mako
91cb97b505-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 ...


/openbmc/sdbusplus/example/asio-example.cpp
/openbmc/sdbusplus/example/get-all-properties.cpp
/openbmc/sdbusplus/example/register-property.cpp
/openbmc/sdbusplus/include/sdbusplus/asio/object_server.hpp
/openbmc/sdbusplus/include/sdbusplus/asio/sd_event.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__config.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__intrusive_queue.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__meta.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/commit.info
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/concepts.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/coroutine.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/execution.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/functional.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/stop_token.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/task.hpp
/openbmc/sdbusplus/include/sdbusplus/async/timer.hpp
/openbmc/sdbusplus/include/sdbusplus/vtable.hpp
/openbmc/sdbusplus/src/async/context.cpp
/openbmc/sdbusplus/src/event.cpp
task.cpp
/openbmc/sdbusplus/test/bus/aio.cpp
/openbmc/sdbusplus/test/vtable/vtable.cpp
/openbmc/sdbusplus/test/vtable/vtable_c.c
/openbmc/sdbusplus/tools/sdbusplus/interface.py
/openbmc/sdbusplus/tools/sdbusplus/method.py
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.client.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.server.cpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.server.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/method.prototype.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/property.prototype.hpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/signal.prototype.hpp.mako
9688ed6806-Jan-2023 Ed Tanous <edtanous@google.com>

Add override keyword everywhere it's required

Clang catches some of these. Add override keywords where we override
functions, per cpp core guidelines.

Change-Id: I66f9e6dff53e07f0057d86a806701593b

Add override keyword everywhere it's required

Clang catches some of these. Add override keywords where we override
functions, per cpp core guidelines.

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

show more ...

5e7ef08305-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 ...


/openbmc/sdbusplus/.prettierrc.yaml
/openbmc/sdbusplus/README.md
/openbmc/sdbusplus/docs/asio.md
/openbmc/sdbusplus/docs/yaml/error.md
/openbmc/sdbusplus/docs/yaml/interface.md
/openbmc/sdbusplus/example/asio-example.cpp
/openbmc/sdbusplus/example/gen/run-ci
/openbmc/sdbusplus/example/get-all-properties.cpp
/openbmc/sdbusplus/example/register-property.cpp
/openbmc/sdbusplus/example/yaml/net/poettering/Calculator.interface.yaml
/openbmc/sdbusplus/include/sdbusplus/asio/object_server.hpp
/openbmc/sdbusplus/include/sdbusplus/asio/property.hpp
/openbmc/sdbusplus/include/sdbusplus/async/execution.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__config.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__intrusive_ptr.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__intrusive_queue.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__meta.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/__detail/__p2300.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/commit.info
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/concepts.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/coroutine.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/execution.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/functional.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/scope.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/stop_token.hpp
/openbmc/sdbusplus/include/sdbusplus/async/stdexec/task.hpp
/openbmc/sdbusplus/include/sdbusplus/bus.hpp
/openbmc/sdbusplus/include/sdbusplus/event.hpp
/openbmc/sdbusplus/include/sdbusplus/sdbus.hpp
/openbmc/sdbusplus/include/sdbusplus/test/sdbus_mock.hpp
/openbmc/sdbusplus/src/async/context.cpp
/openbmc/sdbusplus/src/exception.cpp
context.cpp
task.cpp
timer.cpp
/openbmc/sdbusplus/test/gen/run-ci
/openbmc/sdbusplus/tools/sdbus++-gen-meson
/openbmc/sdbusplus/tools/sdbusplus/interface.py
/openbmc/sdbusplus/tools/sdbusplus/main.py
/openbmc/sdbusplus/tools/sdbusplus/property.py
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.server.cpp.mako
/openbmc/sdbusplus/tools/sdbusplus/templates/interface.server.hpp.mako
6ea246af14-Oct-2022 Patrick Williams <patrick@stwcx.xyz>

test: async: tweak time multiplier

When running under valgrind, the timing is a lot slower. Give a
longer time interval for test cases to give some cushion.

Signed-off-by: Patrick Williams <patric

test: async: tweak time multiplier

When running under valgrind, the timing is a lot slower. Give a
longer time interval for test cases to give some cushion.

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

show more ...

115e9b3d23-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 ...

10483c9423-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 ...

3c242ba423-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 ...

d6b05cc323-Sep-2022 Patrick Williams <patrick@stwcx.xyz>

test: async: add a few recursive task tests

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

4cfc284d22-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 ...

1b7b54ca21-Sep-2022 Patrick Williams <patrick@stwcx.xyz>

async: match: stop pending sender on dtor

If the match is destructed with a pending Sender completion,
we need to 'stop' that Sender. We cannot 'complete' the Sender
because we do not have a messag

async: match: stop pending sender on dtor

If the match is destructed with a pending Sender completion,
we need to 'stop' that Sender. We cannot 'complete' the Sender
because we do not have a message (dbus signal) associated with the
match, but if we do nothing then the Sender is hung (and leaked).

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

show more ...

78e436fe21-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 ...

0139cac720-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 ...

435eb1bd16-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 ...

12