diff options
| author | William A. Kennington III <wak@google.com> | 2018-10-14 23:26:18 -0700 |
|---|---|---|
| committer | William A. Kennington III <wak@google.com> | 2018-10-15 19:11:45 +0000 |
| commit | 209dfc6484ad964cb0e63632b3d354e2ae3bdbea (patch) | |
| tree | 03dbcbbcde8966a2b9382934dfa5b7cb92d7e6ed | |
| parent | 8e8d1a66be8bab2f2d79f08eb5d175334ce2e67e (diff) | |
| download | sdbusplus-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.hpp | 15 | ||||
| -rw-r--r-- | sdbusplus/sdbus.hpp | 8 | ||||
| -rw-r--r-- | sdbusplus/test/sdbus_mock.hpp | 2 |
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*)); |

