| #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 |
| |