message: Implment get_reply_cookie()
sd-bus messages of a reply type (return,error) contain the cookie
associated with the incoming request. Lets expose the reply cookie
of the message on the public interface.
Tested:
Builds and unit tests still pass
Change-Id: I7dddae1d2c4b961987e6526ce2dcb16107f40bed
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/sdbusplus/message.hpp b/sdbusplus/message.hpp
index df8a38d..11cfb9f 100644
--- a/sdbusplus/message.hpp
+++ b/sdbusplus/message.hpp
@@ -249,6 +249,21 @@
return cookie;
}
+ /** @brief Get the reply cookie of a message.
+ *
+ * @return The reply cookie of a message.
+ */
+ auto get_reply_cookie()
+ {
+ uint64_t cookie;
+ int r = _intf->sd_bus_message_get_reply_cookie(_msg.get(), &cookie);
+ if (r < 0)
+ {
+ throw exception::SdBusError(-r, "sd_bus_message_get_reply_cookie");
+ }
+ return cookie;
+ }
+
/** @brief Check if message is a method call for an interface/method.
*
* @param[in] interface - The interface to match.
diff --git a/sdbusplus/sdbus.hpp b/sdbusplus/sdbus.hpp
index f1bea78..429e70a 100644
--- a/sdbusplus/sdbus.hpp
+++ b/sdbusplus/sdbus.hpp
@@ -75,6 +75,8 @@
virtual int sd_bus_message_get_type(sd_bus_message* m, uint8_t* type) = 0;
virtual int sd_bus_message_get_cookie(sd_bus_message* m,
uint64_t* cookie) = 0;
+ virtual int sd_bus_message_get_reply_cookie(sd_bus_message* m,
+ uint64_t* cookie) = 0;
virtual const char* sd_bus_message_get_destination(sd_bus_message* m) = 0;
virtual const char* sd_bus_message_get_interface(sd_bus_message* m) = 0;
virtual const char* sd_bus_message_get_member(sd_bus_message* m) = 0;
@@ -305,6 +307,12 @@
return ::sd_bus_message_get_cookie(m, cookie);
}
+ int sd_bus_message_get_reply_cookie(sd_bus_message* m,
+ uint64_t* cookie) override
+ {
+ return ::sd_bus_message_get_reply_cookie(m, cookie);
+ }
+
const char* sd_bus_message_get_destination(sd_bus_message* m) override
{
return ::sd_bus_message_get_destination(m);
diff --git a/sdbusplus/test/sdbus_mock.hpp b/sdbusplus/test/sdbus_mock.hpp
index 7b8abc5..2386a4d 100644
--- a/sdbusplus/test/sdbus_mock.hpp
+++ b/sdbusplus/test/sdbus_mock.hpp
@@ -58,6 +58,8 @@
MOCK_METHOD1(sd_bus_message_get_bus, sd_bus*(sd_bus_message*));
MOCK_METHOD2(sd_bus_message_get_type, int(sd_bus_message*, uint8_t*));
MOCK_METHOD2(sd_bus_message_get_cookie, int(sd_bus_message*, uint64_t*));
+ MOCK_METHOD2(sd_bus_message_get_reply_cookie,
+ int(sd_bus_message*, uint64_t*));
MOCK_METHOD1(sd_bus_message_get_destination, const char*(sd_bus_message*));
MOCK_METHOD1(sd_bus_message_get_interface, const char*(sd_bus_message*));
MOCK_METHOD1(sd_bus_message_get_member, const char*(sd_bus_message*));