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>
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 @@
         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 @@
     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 @@
         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 @@
     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*));