blob: d7731422e6402ab522ba6c624c8b1206ebbcfa70 [file] [log] [blame]
Gunnar Millsf6ed5892018-09-07 17:08:02 -05001#include "config.h"
2
3#include "item_updater.hpp"
4#include "watch.hpp"
5
6#include <phosphor-logging/log.hpp>
Adriana Kobylak2d8fa222017-03-15 12:34:32 -05007#include <sdbusplus/bus.hpp>
8#include <sdbusplus/server/manager.hpp>
Gunnar Mills6bd6d7b2017-09-18 09:22:36 -05009#include <system_error>
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050010
11int main(int argc, char* argv[])
12{
Gunnar Mills6bd6d7b2017-09-18 09:22:36 -050013 using namespace openpower::software::updater;
14 using namespace phosphor::logging;
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050015 auto bus = sdbusplus::bus::new_default();
16
Gunnar Mills6bd6d7b2017-09-18 09:22:36 -050017 sd_event* loop = nullptr;
18 auto rc = sd_event_default(&loop);
19 if (rc < 0)
20 {
21 log<level::ERR>("Error occurred during the sd_event_default",
22 entry("RC=%d", rc));
23 return -1;
24 }
25
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050026 // Add sdbusplus ObjectManager.
27 sdbusplus::server::manager::manager objManager(bus, SOFTWARE_OBJPATH);
28
Gunnar Mills6bd6d7b2017-09-18 09:22:36 -050029 ItemUpdater updater(bus, SOFTWARE_OBJPATH);
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050030
31 bus.request_name(BUSNAME_UPDATER);
Gunnar Mills6bd6d7b2017-09-18 09:22:36 -050032 try
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050033 {
Gunnar Mills6bd6d7b2017-09-18 09:22:36 -050034 openpower::software::updater::Watch watch(
Adriana Kobylak70dcb632018-02-27 15:46:52 -060035 loop,
36 std::bind(std::mem_fn(&ItemUpdater::updateFunctionalAssociation),
37 &updater, std::placeholders::_1));
Gunnar Mills6bd6d7b2017-09-18 09:22:36 -050038 bus.attach_event(loop, SD_EVENT_PRIORITY_NORMAL);
39 auto rc = sd_event_loop(loop);
40 if (rc < 0)
41 {
42 log<level::ERR>("Error occurred during the sd_event_loop",
43 entry("RC=%d", rc));
44 return -1;
45 }
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050046 }
Gunnar Mills6bd6d7b2017-09-18 09:22:36 -050047 catch (const std::system_error& e)
48 {
49 log<level::ERR>(e.what());
50 return -1;
51 }
52
53 sd_event_unref(loop);
54
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050055 return 0;
56}