asio: connection: add bus to ctor
Add a constructor parameter that accepts a bus-rvalue with a default
of `sdbusplus::bus::new_default`. This was the previous behavior of
the single-parameter constructor but now allows any other
bus-constructing-function result to be used as a constructor parameter.
There was previously an alternative constructor that accepted an
`sd_bus*` raw pointer, but this required an awkward
`new_bus().release()` (or similar) call.
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Id49a007eb1bddb054d1ffc83b415feab4a33a33a
diff --git a/include/sdbusplus/asio/connection.hpp b/include/sdbusplus/asio/connection.hpp
index 57504c1..1ece736 100644
--- a/include/sdbusplus/asio/connection.hpp
+++ b/include/sdbusplus/asio/connection.hpp
@@ -54,9 +54,11 @@
class connection : public sdbusplus::bus_t
{
public:
- // default to system bus
- connection(boost::asio::io_context& io) :
- sdbusplus::bus_t(sdbusplus::bus::new_default()), io_(io),
+ // default to default bus
+ explicit connection(
+ boost::asio::io_context& io,
+ sdbusplus::bus_t&& bus = sdbusplus::bus::new_default()) :
+ sdbusplus::bus_t(std::move(bus)), io_(io),
socket(io_.get_executor(), get_fd()), timer(io_.get_executor())
{
read_immediate();