diff options
author | William A. Kennington III <wak@google.com> | 2018-10-14 23:24:25 -0700 |
---|---|---|
committer | William A. Kennington III <wak@google.com> | 2018-10-15 19:11:45 +0000 |
commit | 8e8d1a66be8bab2f2d79f08eb5d175334ce2e67e (patch) | |
tree | 96f97053bc63baf32169a78f4dcb6710279b6b8e | |
parent | 079fb85a398d90800935e3985bb1266a7530a26e (diff) | |
download | sdbusplus-8e8d1a66be8bab2f2d79f08eb5d175334ce2e67e.tar.gz sdbusplus-8e8d1a66be8bab2f2d79f08eb5d175334ce2e67e.zip |
message: Implment get_type()
sd-bus messages are typed and we are going to need this information to
support a future commit. Lets expose the type of the message on the
public interface.
Tested:
Builds and unit tests still pass
Change-Id: I9c259af09b367d580dc14762d28cf77c129e2906
Signed-off-by: William A. Kennington III <wak@google.com>
-rw-r--r-- | sdbusplus/message.hpp | 15 | ||||
-rw-r--r-- | sdbusplus/sdbus.hpp | 6 | ||||
-rw-r--r-- | sdbusplus/test/sdbus_mock.hpp | 1 |
3 files changed, 22 insertions, 0 deletions
diff --git a/sdbusplus/message.hpp b/sdbusplus/message.hpp index 30e8d8a..df8a38d 100644 --- a/sdbusplus/message.hpp +++ b/sdbusplus/message.hpp @@ -219,6 +219,21 @@ class message return _intf->sd_bus_message_get_errno(_msg.get()); } + /** @brief Get the type of a message. + * + * @return The type of message. + */ + auto get_type() + { + uint8_t type; + int r = _intf->sd_bus_message_get_type(_msg.get(), &type); + if (r < 0) + { + throw exception::SdBusError(-r, "sd_bus_message_get_type"); + } + return type; + } + /** @brief Get the transaction cookie of a message. * * @return The transaction cookie of a message. diff --git a/sdbusplus/sdbus.hpp b/sdbusplus/sdbus.hpp index 5985266..f1bea78 100644 --- a/sdbusplus/sdbus.hpp +++ b/sdbusplus/sdbus.hpp @@ -72,6 +72,7 @@ class SdBusInterface virtual int sd_bus_message_exit_container(sd_bus_message* m) = 0; virtual sd_bus* sd_bus_message_get_bus(sd_bus_message* m) = 0; + 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 const char* sd_bus_message_get_destination(sd_bus_message* m) = 0; @@ -294,6 +295,11 @@ class SdBusImpl : public SdBusInterface return ::sd_bus_message_get_bus(m); } + int sd_bus_message_get_type(sd_bus_message* m, uint8_t* type) override + { + return ::sd_bus_message_get_type(m, type); + } + int sd_bus_message_get_cookie(sd_bus_message* m, uint64_t* cookie) override { return ::sd_bus_message_get_cookie(m, cookie); diff --git a/sdbusplus/test/sdbus_mock.hpp b/sdbusplus/test/sdbus_mock.hpp index beb9a0e..7b8abc5 100644 --- a/sdbusplus/test/sdbus_mock.hpp +++ b/sdbusplus/test/sdbus_mock.hpp @@ -56,6 +56,7 @@ class SdBusMock : public SdBusInterface MOCK_METHOD1(sd_bus_message_exit_container, int(sd_bus_message*)); 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_METHOD1(sd_bus_message_get_destination, const char*(sd_bus_message*)); MOCK_METHOD1(sd_bus_message_get_interface, const char*(sd_bus_message*)); |