summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam A. Kennington III <wak@google.com>2018-10-14 23:24:25 -0700
committerWilliam A. Kennington III <wak@google.com>2018-10-15 19:11:45 +0000
commit8e8d1a66be8bab2f2d79f08eb5d175334ce2e67e (patch)
tree96f97053bc63baf32169a78f4dcb6710279b6b8e
parent079fb85a398d90800935e3985bb1266a7530a26e (diff)
downloadsdbusplus-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.hpp15
-rw-r--r--sdbusplus/sdbus.hpp6
-rw-r--r--sdbusplus/test/sdbus_mock.hpp1
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*));
OpenPOWER on IntegriCloud