logging: Create Entry dbus interface
Implement the generated code to create an error/event
entry dbus object.
Change-Id: I881636fe3e8de680d9a15fff1fe933d5e22eed06
Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
diff --git a/xyz.openbmc_project.Logging.Entry.cpp b/xyz.openbmc_project.Logging.Entry.cpp
new file mode 100644
index 0000000..cdf91f5
--- /dev/null
+++ b/xyz.openbmc_project.Logging.Entry.cpp
@@ -0,0 +1,400 @@
+#include <algorithm>
+#include <sdbusplus/server.hpp>
+#include <sdbusplus/exception.hpp>
+#include <xyz/openbmc_project/Logging/Entry/server.hpp>
+
+namespace sdbusplus
+{
+namespace xyz
+{
+namespace openbmc_project
+{
+namespace Logging
+{
+namespace server
+{
+
+Entry::Entry(bus::bus& bus, const char* path)
+ : _xyz_openbmc_project_Logging_Entry_interface(
+ bus, path, _interface, _vtable, this)
+{
+}
+
+
+
+auto Entry::id() const ->
+ uint32_t
+{
+ return _id;
+}
+
+int Entry::_callback_get_Id(
+ sd_bus* bus, const char* path, const char* interface,
+ const char* property, sd_bus_message* reply, void* context,
+ sd_bus_error* error)
+{
+ using sdbusplus::server::binding::details::convertForMessage;
+
+ try
+ {
+ auto m = message::message(sd_bus_message_ref(reply));
+
+ auto o = static_cast<Entry*>(context);
+ m.append(convertForMessage(o->id()));
+ }
+ catch(sdbusplus::internal_exception_t& e)
+ {
+ sd_bus_error_set_const(error, e.name(), e.description());
+ return -EINVAL;
+ }
+
+ return true;
+}
+
+auto Entry::id(uint32_t value) ->
+ uint32_t
+{
+ if (_id != value)
+ {
+ _id = value;
+ _xyz_openbmc_project_Logging_Entry_interface.property_changed("Id");
+ }
+
+ return _id;
+}
+
+int Entry::_callback_set_Id(
+ sd_bus* bus, const char* path, const char* interface,
+ const char* property, sd_bus_message* value, void* context,
+ sd_bus_error* error)
+{
+ try
+ {
+ auto m = message::message(sd_bus_message_ref(value));
+
+ auto o = static_cast<Entry*>(context);
+
+ uint32_t v{};
+ m.read(v);
+ o->id(v);
+ }
+ catch(sdbusplus::internal_exception_t& e)
+ {
+ sd_bus_error_set_const(error, e.name(), e.description());
+ return -EINVAL;
+ }
+
+ return true;
+}
+
+namespace details
+{
+namespace Entry
+{
+static const auto _property_Id =
+ utility::tuple_to_array(message::types::type_id<
+ uint32_t>());
+}
+}
+auto Entry::severity() const ->
+ Level
+{
+ return _severity;
+}
+
+int Entry::_callback_get_Severity(
+ sd_bus* bus, const char* path, const char* interface,
+ const char* property, sd_bus_message* reply, void* context,
+ sd_bus_error* error)
+{
+ using sdbusplus::server::binding::details::convertForMessage;
+
+ try
+ {
+ auto m = message::message(sd_bus_message_ref(reply));
+
+ auto o = static_cast<Entry*>(context);
+ m.append(convertForMessage(o->severity()));
+ }
+ catch(sdbusplus::internal_exception_t& e)
+ {
+ sd_bus_error_set_const(error, e.name(), e.description());
+ return -EINVAL;
+ }
+
+ return true;
+}
+
+auto Entry::severity(Level value) ->
+ Level
+{
+ if (_severity != value)
+ {
+ _severity = value;
+ _xyz_openbmc_project_Logging_Entry_interface.property_changed("Severity");
+ }
+
+ return _severity;
+}
+
+int Entry::_callback_set_Severity(
+ sd_bus* bus, const char* path, const char* interface,
+ const char* property, sd_bus_message* value, void* context,
+ sd_bus_error* error)
+{
+ try
+ {
+ auto m = message::message(sd_bus_message_ref(value));
+
+ auto o = static_cast<Entry*>(context);
+
+ std::string v{};
+ m.read(v);
+ o->severity(convertLevelFromString(v));
+ }
+ catch(sdbusplus::internal_exception_t& e)
+ {
+ sd_bus_error_set_const(error, e.name(), e.description());
+ return -EINVAL;
+ }
+
+ return true;
+}
+
+namespace details
+{
+namespace Entry
+{
+static const auto _property_Severity =
+ utility::tuple_to_array(message::types::type_id<
+ std::string>());
+}
+}
+auto Entry::message() const ->
+ std::string
+{
+ return _message;
+}
+
+int Entry::_callback_get_Message(
+ sd_bus* bus, const char* path, const char* interface,
+ const char* property, sd_bus_message* reply, void* context,
+ sd_bus_error* error)
+{
+ using sdbusplus::server::binding::details::convertForMessage;
+
+ try
+ {
+ auto m = message::message(sd_bus_message_ref(reply));
+
+ auto o = static_cast<Entry*>(context);
+ m.append(convertForMessage(o->message()));
+ }
+ catch(sdbusplus::internal_exception_t& e)
+ {
+ sd_bus_error_set_const(error, e.name(), e.description());
+ return -EINVAL;
+ }
+
+ return true;
+}
+
+auto Entry::message(std::string value) ->
+ std::string
+{
+ if (_message != value)
+ {
+ _message = value;
+ _xyz_openbmc_project_Logging_Entry_interface.property_changed("Message");
+ }
+
+ return _message;
+}
+
+int Entry::_callback_set_Message(
+ sd_bus* bus, const char* path, const char* interface,
+ const char* property, sd_bus_message* value, void* context,
+ sd_bus_error* error)
+{
+ try
+ {
+ auto m = message::message(sd_bus_message_ref(value));
+
+ auto o = static_cast<Entry*>(context);
+
+ std::string v{};
+ m.read(v);
+ o->message(v);
+ }
+ catch(sdbusplus::internal_exception_t& e)
+ {
+ sd_bus_error_set_const(error, e.name(), e.description());
+ return -EINVAL;
+ }
+
+ return true;
+}
+
+namespace details
+{
+namespace Entry
+{
+static const auto _property_Message =
+ utility::tuple_to_array(message::types::type_id<
+ std::string>());
+}
+}
+auto Entry::additionalData() const ->
+ std::vector<std::string>
+{
+ return _additionalData;
+}
+
+int Entry::_callback_get_AdditionalData(
+ sd_bus* bus, const char* path, const char* interface,
+ const char* property, sd_bus_message* reply, void* context,
+ sd_bus_error* error)
+{
+ using sdbusplus::server::binding::details::convertForMessage;
+
+ try
+ {
+ auto m = message::message(sd_bus_message_ref(reply));
+
+ auto o = static_cast<Entry*>(context);
+ m.append(convertForMessage(o->additionalData()));
+ }
+ catch(sdbusplus::internal_exception_t& e)
+ {
+ sd_bus_error_set_const(error, e.name(), e.description());
+ return -EINVAL;
+ }
+
+ return true;
+}
+
+auto Entry::additionalData(std::vector<std::string> value) ->
+ std::vector<std::string>
+{
+ if (_additionalData != value)
+ {
+ _additionalData = value;
+ _xyz_openbmc_project_Logging_Entry_interface.property_changed("AdditionalData");
+ }
+
+ return _additionalData;
+}
+
+int Entry::_callback_set_AdditionalData(
+ sd_bus* bus, const char* path, const char* interface,
+ const char* property, sd_bus_message* value, void* context,
+ sd_bus_error* error)
+{
+ try
+ {
+ auto m = message::message(sd_bus_message_ref(value));
+
+ auto o = static_cast<Entry*>(context);
+
+ std::vector<std::string> v{};
+ m.read(v);
+ o->additionalData(v);
+ }
+ catch(sdbusplus::internal_exception_t& e)
+ {
+ sd_bus_error_set_const(error, e.name(), e.description());
+ return -EINVAL;
+ }
+
+ return true;
+}
+
+namespace details
+{
+namespace Entry
+{
+static const auto _property_AdditionalData =
+ utility::tuple_to_array(message::types::type_id<
+ std::vector<std::string>>());
+}
+}
+
+
+namespace
+{
+/** String to enum mapping for Entry::Level */
+static const std::tuple<const char*, Entry::Level> mappingEntryLevel[] =
+ {
+ std::make_tuple( "xyz.openbmc_project.Logging.Entry.Level.Emergency", Entry::Level::Emergency ),
+ std::make_tuple( "xyz.openbmc_project.Logging.Entry.Level.Alert", Entry::Level::Alert ),
+ std::make_tuple( "xyz.openbmc_project.Logging.Entry.Level.Critical", Entry::Level::Critical ),
+ std::make_tuple( "xyz.openbmc_project.Logging.Entry.Level.Error", Entry::Level::Error ),
+ std::make_tuple( "xyz.openbmc_project.Logging.Entry.Level.Warning", Entry::Level::Warning ),
+ std::make_tuple( "xyz.openbmc_project.Logging.Entry.Level.Notice", Entry::Level::Notice ),
+ std::make_tuple( "xyz.openbmc_project.Logging.Entry.Level.Informational", Entry::Level::Informational ),
+ std::make_tuple( "xyz.openbmc_project.Logging.Entry.Level.Debug", Entry::Level::Debug ),
+ };
+
+} // anonymous namespace
+
+auto Entry::convertLevelFromString(std::string& s) ->
+ Level
+{
+ auto i = std::find_if(
+ std::begin(mappingEntryLevel),
+ std::end(mappingEntryLevel),
+ [&s](auto& e){ return 0 == strcmp(s.c_str(), std::get<0>(e)); } );
+ if (std::end(mappingEntryLevel) == i)
+ {
+ throw sdbusplus::exception::InvalidEnumString();
+ }
+ else
+ {
+ return std::get<1>(*i);
+ }
+}
+
+std::string convertForMessage(Entry::Level v)
+{
+ auto i = std::find_if(
+ std::begin(mappingEntryLevel),
+ std::end(mappingEntryLevel),
+ [v](auto& e){ return v == std::get<1>(e); });
+ return std::get<0>(*i);
+}
+
+const vtable::vtable_t Entry::_vtable[] = {
+ vtable::start(),
+ vtable::property("Id",
+ details::Entry::_property_Id
+ .data(),
+ _callback_get_Id,
+ _callback_set_Id,
+ vtable::property_::emits_change),
+ vtable::property("Severity",
+ details::Entry::_property_Severity
+ .data(),
+ _callback_get_Severity,
+ _callback_set_Severity,
+ vtable::property_::emits_change),
+ vtable::property("Message",
+ details::Entry::_property_Message
+ .data(),
+ _callback_get_Message,
+ _callback_set_Message,
+ vtable::property_::emits_change),
+ vtable::property("AdditionalData",
+ details::Entry::_property_AdditionalData
+ .data(),
+ _callback_get_AdditionalData,
+ _callback_set_AdditionalData,
+ vtable::property_::emits_change),
+ vtable::end()
+};
+
+} // namespace server
+} // namespace Logging
+} // namespace openbmc_project
+} // namespace xyz
+} // namespace sdbusplus
+