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 */
main(int,char **)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