Skip to content

Commit ca69493

Browse files
authored
fix: move new virtual functions to the end of the class (#539)
This fixes ABI compatibility issue of the recent version.
1 parent fbe7762 commit ca69493

1 file changed

Lines changed: 39 additions & 38 deletions

File tree

include/sdbus-c++/IProxy.h

Lines changed: 39 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -605,44 +605,6 @@ namespace sdbus {
605605
, const std::chrono::duration<Rep, Period>& timeout
606606
, with_future_t );
607607

608-
/*!
609-
* @brief Calls method on the D-Bus object asynchronously
610-
*
611-
* @param[in] message Message representing a D-Bus method call
612-
* @return An awaitable object that can be co_await'ed to retrieve the result
613-
*
614-
* This function call the remote D-Bus object asynchronously and return
615-
* an awaitable that can be used with `co_await` to suspend a coroutine
616-
* until the result is available.
617-
*
618-
* The call itself is non-blocking: the method call is performed and the method
619-
* returns. The awaitable should be used to retrieve the result.
620-
*
621-
* The coroutine continuation (code after `co_await`) runs on the context of
622-
* the bus connection I/O event loop thread.
623-
*
624-
* The default D-Bus method call timeout is used. See IConnection::getMethodCallTimeout().
625-
*
626-
* @throws sdbus::Error in case of failure (propagated when awaited)
627-
*/
628-
virtual Awaitable<MethodReply> callMethodAsync(const MethodCall& message, with_awaitable_t) = 0;
629-
630-
/*!
631-
* @brief Calls method on the D-Bus object asynchronously, with custom timeout
632-
*
633-
* @param[in] message Message representing a D-Bus method call
634-
* @param[in] timeout Timeout for the method call in microseconds
635-
* @return An awaitable object that can be co_await'ed to retrieve the result
636-
*
637-
* This behaves the same as IProxy::callMethodAsync(const MethodCall&, with_awaitable_t),
638-
* but with a custom timeout for the method call. If timeout is zero, the behavior is identical.
639-
*
640-
* @throws sdbus::Error in case of failure (propagated when awaited)
641-
*/
642-
virtual Awaitable<MethodReply> callMethodAsync( const MethodCall& message
643-
, uint64_t timeout
644-
, with_awaitable_t ) = 0;
645-
646608
/*!
647609
* @copydoc IProxy::callMethodAsync(const MethodCall&,uint64_t,with_awaitable_t)
648610
*/
@@ -705,6 +667,45 @@ namespace sdbus {
705667
, const char* signalName
706668
, signal_handler signalHandler
707669
, return_slot_t ) = 0;
670+
671+
public: // New virtual functions in sdbus-c++ v2, for ABI compatibility
672+
/*!
673+
* @brief Calls method on the D-Bus object asynchronously
674+
*
675+
* @param[in] message Message representing a D-Bus method call
676+
* @return An awaitable object that can be co_await'ed to retrieve the result
677+
*
678+
* This function call the remote D-Bus object asynchronously and return
679+
* an awaitable that can be used with `co_await` to suspend a coroutine
680+
* until the result is available.
681+
*
682+
* The call itself is non-blocking: the method call is performed and the method
683+
* returns. The awaitable should be used to retrieve the result.
684+
*
685+
* The coroutine continuation (code after `co_await`) runs on the context of
686+
* the bus connection I/O event loop thread.
687+
*
688+
* The default D-Bus method call timeout is used. See IConnection::getMethodCallTimeout().
689+
*
690+
* @throws sdbus::Error in case of failure (propagated when awaited)
691+
*/
692+
virtual Awaitable<MethodReply> callMethodAsync(const MethodCall& message, with_awaitable_t) = 0;
693+
694+
/*!
695+
* @brief Calls method on the D-Bus object asynchronously, with custom timeout
696+
*
697+
* @param[in] message Message representing a D-Bus method call
698+
* @param[in] timeout Timeout for the method call in microseconds
699+
* @return An awaitable object that can be co_await'ed to retrieve the result
700+
*
701+
* This behaves the same as IProxy::callMethodAsync(const MethodCall&, with_awaitable_t),
702+
* but with a custom timeout for the method call. If timeout is zero, the behavior is identical.
703+
*
704+
* @throws sdbus::Error in case of failure (propagated when awaited)
705+
*/
706+
virtual Awaitable<MethodReply> callMethodAsync( const MethodCall& message
707+
, uint64_t timeout
708+
, with_awaitable_t ) = 0;
708709
};
709710

710711
/********************************************//**

0 commit comments

Comments
 (0)