1 #include "config.h" 2 3 #include "bios_handler.hpp" 4 #include "constants.hpp" 5 #include "event_logger.hpp" 6 #include "exceptions.hpp" 7 #include "logger.hpp" 8 #include "manager.hpp" 9 #include "types.hpp" 10 11 #include <sdbusplus/asio/connection.hpp> 12 #include <sdbusplus/asio/object_server.hpp> 13 14 #include <iostream> 15 16 /** 17 * @brief Main function for VPD parser application. 18 */ 19 int main(int, char**) 20 { 21 try 22 { 23 auto io_con = std::make_shared<boost::asio::io_context>(); 24 auto connection = 25 std::make_shared<sdbusplus::asio::connection>(*io_con); 26 auto server = sdbusplus::asio::object_server(connection); 27 28 std::shared_ptr<sdbusplus::asio::dbus_interface> interface = 29 server.add_interface(OBJPATH, IFACE); 30 31 std::shared_ptr<sdbusplus::asio::dbus_interface> progressInf = 32 server.add_interface(OBJPATH, 33 vpd::constants::vpdCollectionInterface); 34 35 auto vpdManager = std::make_shared<vpd::Manager>( 36 io_con, interface, progressInf, connection); 37 38 // TODO: Take this under conditional compilation for IBM 39 [[maybe_unused]] auto biosHandler = 40 std::make_shared<vpd::BiosHandler<vpd::IbmBiosHandler>>( 41 connection, vpdManager); 42 43 interface->initialize(); 44 progressInf->initialize(); 45 46 vpd::logging::logMessage("Start VPD-Manager event loop"); 47 48 // Grab the bus name 49 connection->request_name(BUSNAME); 50 51 // Start event loop. 52 io_con->run(); 53 54 exit(EXIT_SUCCESS); 55 } 56 catch (const std::exception& l_ex) 57 { 58 vpd::logging::logMessage("VPD-Manager service failed to start."); 59 vpd::EventLogger::createSyncPel( 60 vpd::EventLogger::getErrorType(l_ex), 61 vpd::types::SeverityType::Critical, __FILE__, __FUNCTION__, 0, 62 vpd::EventLogger::getErrorMsg(l_ex), std::nullopt, std::nullopt, 63 std::nullopt, std::nullopt); 64 } 65 exit(EXIT_FAILURE); 66 } 67