summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam A. Kennington III <wak@google.com>2018-10-14 23:26:18 -0700
committerWilliam A. Kennington III <wak@google.com>2018-10-15 19:11:45 +0000
commit209dfc6484ad964cb0e63632b3d354e2ae3bdbea (patch)
tree03dbcbbcde8966a2b9382934dfa5b7cb92d7e6ed
parent8e8d1a66be8bab2f2d79f08eb5d175334ce2e67e (diff)
downloadsdbusplus-209dfc6484ad964cb0e63632b3d354e2ae3bdbea.tar.gz
sdbusplus-209dfc6484ad964cb0e63632b3d354e2ae3bdbea.zip
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>
-rw-r--r--sdbusplus/message.hpp15
-rw-r--r--sdbusplus/sdbus.hpp8
-rw-r--r--sdbusplus/test/sdbus_mock.hpp2
3 files changed, 25 insertions, 0 deletions
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 @@ class message
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 @@ class SdBusInterface
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 @@ class SdBusImpl : public SdBusInterface
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 @@ class SdBusMock : public SdBusInterface
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*));
OpenPOWER on IntegriCloud