mirror of
https://github.com/Kistler-Group/sdbus-cpp.git
synced 2025-07-30 18:17:14 +02:00
fix: fix the return type of the slot-returning overloads (#494)
This commit is contained in:
committed by
GitHub
parent
6212b12159
commit
0430ae0ad9
@ -217,7 +217,7 @@ namespace sdbus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename _Function>
|
template <typename _Function>
|
||||||
PendingAsyncCall SetAsync(const InterfaceName& interfaceName, const PropertyName& propertyName, const sdbus::Variant& value, _Function&& callback, return_slot_t)
|
[[nodiscard]] Slot SetAsync(const InterfaceName& interfaceName, const PropertyName& propertyName, const sdbus::Variant& value, _Function&& callback, return_slot_t)
|
||||||
{
|
{
|
||||||
return m_proxy.setPropertyAsync(propertyName).onInterface(interfaceName).toValue(value).uponReplyInvoke(std::forward<_Function>(callback), return_slot);
|
return m_proxy.setPropertyAsync(propertyName).onInterface(interfaceName).toValue(value).uponReplyInvoke(std::forward<_Function>(callback), return_slot);
|
||||||
}
|
}
|
||||||
@ -229,7 +229,7 @@ namespace sdbus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename _Function>
|
template <typename _Function>
|
||||||
PendingAsyncCall SetAsync(std::string_view interfaceName, std::string_view propertyName, const sdbus::Variant& value, _Function&& callback, return_slot_t)
|
[[nodiscard]] Slot SetAsync(std::string_view interfaceName, std::string_view propertyName, const sdbus::Variant& value, _Function&& callback, return_slot_t)
|
||||||
{
|
{
|
||||||
return m_proxy.setPropertyAsync(propertyName).onInterface(interfaceName).toValue(value).uponReplyInvoke(std::forward<_Function>(callback), return_slot);
|
return m_proxy.setPropertyAsync(propertyName).onInterface(interfaceName).toValue(value).uponReplyInvoke(std::forward<_Function>(callback), return_slot);
|
||||||
}
|
}
|
||||||
@ -261,7 +261,7 @@ namespace sdbus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename _Function>
|
template <typename _Function>
|
||||||
PendingAsyncCall GetAllAsync(const InterfaceName& interfaceName, _Function&& callback, return_slot_t)
|
[[nodiscard]] Slot GetAllAsync(const InterfaceName& interfaceName, _Function&& callback, return_slot_t)
|
||||||
{
|
{
|
||||||
return m_proxy.getAllPropertiesAsync().onInterface(interfaceName).uponReplyInvoke(std::forward<_Function>(callback), return_slot);
|
return m_proxy.getAllPropertiesAsync().onInterface(interfaceName).uponReplyInvoke(std::forward<_Function>(callback), return_slot);
|
||||||
}
|
}
|
||||||
@ -273,7 +273,7 @@ namespace sdbus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename _Function>
|
template <typename _Function>
|
||||||
PendingAsyncCall GetAllAsync(std::string_view interfaceName, _Function&& callback, return_slot_t)
|
[[nodiscard]] Slot GetAllAsync(std::string_view interfaceName, _Function&& callback, return_slot_t)
|
||||||
{
|
{
|
||||||
return m_proxy.getAllPropertiesAsync().onInterface(interfaceName).uponReplyInvoke(std::forward<_Function>(callback), return_slot);
|
return m_proxy.getAllPropertiesAsync().onInterface(interfaceName).uponReplyInvoke(std::forward<_Function>(callback), return_slot);
|
||||||
}
|
}
|
||||||
|
@ -127,6 +127,26 @@ TYPED_TEST(SdbusTestObject, SetsPropertyAsynchronouslyViaPropertiesInterface)
|
|||||||
ASSERT_THAT(this->m_proxy->action(), Eq(newActionValue));
|
ASSERT_THAT(this->m_proxy->action(), Eq(newActionValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TYPED_TEST(SdbusTestObject, CancelsAsynchronousPropertySettingViaPropertiesInterface)
|
||||||
|
{
|
||||||
|
uint32_t newActionValue = 2346;
|
||||||
|
std::promise<void> promise;
|
||||||
|
auto future = promise.get_future();
|
||||||
|
|
||||||
|
{
|
||||||
|
auto slot = this->m_proxy->SetAsync(INTERFACE_NAME, "action", sdbus::Variant{newActionValue}, [&](std::optional<sdbus::Error> err)
|
||||||
|
{
|
||||||
|
if (!err)
|
||||||
|
promise.set_value();
|
||||||
|
else
|
||||||
|
promise.set_exception(std::make_exception_ptr(*std::move(err)));
|
||||||
|
}, sdbus::return_slot);
|
||||||
|
// Now the slot is destroyed, cancelling the async call
|
||||||
|
}
|
||||||
|
|
||||||
|
ASSERT_THAT(future.wait_for(300ms), Eq(std::future_status::timeout));
|
||||||
|
}
|
||||||
|
|
||||||
TYPED_TEST(SdbusTestObject, SetsPropertyAsynchronouslyViaPropertiesInterfaceWithFuture)
|
TYPED_TEST(SdbusTestObject, SetsPropertyAsynchronouslyViaPropertiesInterfaceWithFuture)
|
||||||
{
|
{
|
||||||
uint32_t newActionValue = 2347;
|
uint32_t newActionValue = 2347;
|
||||||
|
Reference in New Issue
Block a user