diff options
author | Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com> | 2017-06-29 18:35:00 +0530 |
---|---|---|
committer | Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com> | 2017-07-29 23:57:59 +0530 |
commit | ee4d83dfc7b6cf3b5979541ab5b1918b68e6bbdb (patch) | |
tree | 4d186ddf133d77880e857fccdddb71fcc155a6bf /app.cpp | |
parent | 554d60059e7d0b699b3cdcbe8de2c341613e9931 (diff) | |
download | openpower-occ-control-ee4d83dfc7b6cf3b5979541ab5b1918b68e6bbdb.tar.gz openpower-occ-control-ee4d83dfc7b6cf3b5979541ab5b1918b68e6bbdb.zip |
Add support to watch for OCC errors
Change-Id: I98d95020a2d01e281e5c8efa825d6b4bd4c6c160
Signed-off-by: Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com>
Diffstat (limited to 'app.cpp')
-rw-r--r-- | app.cpp | 50 |
1 files changed, 31 insertions, 19 deletions
@@ -1,32 +1,44 @@ #include <phosphor-logging/log.hpp> -#include <exception> +#include <phosphor-logging/elog.hpp> +#include <xyz/openbmc_project/Common/error.hpp> +#include <org/open_power/OCC/Device/error.hpp> #include "occ_manager.hpp" +#include "occ_events.hpp" +#include "elog-errors.hpp" #include "config.h" +using namespace phosphor::logging; + +using namespace sdbusplus::org::open_power::OCC::Device::Error; +using InternalFailure = sdbusplus::xyz::openbmc_project::Common:: + Error::InternalFailure; + int main(int argc, char* argv[]) { - try + auto bus = sdbusplus::bus::new_default(); + + // Need sd_event to watch for OCC device errors + sd_event* event = nullptr; + auto r = sd_event_default(&event); + if (r < 0) { - auto bus = sdbusplus::bus::new_default(); - bus.request_name(OCC_CONTROL_BUSNAME); + log<level::ERR>("Error creating a default sd_event handler"); + return r; + } + open_power::occ::EventPtr eventP{event}; + event = nullptr; - sdbusplus::server::manager::manager objManager(bus, - OCC_CONTROL_ROOT); + // Attach the bus to sd_event to service user requests + bus.attach_event(eventP.get(), SD_EVENT_PRIORITY_NORMAL); - open_power::occ::Manager mgr(bus); + sdbusplus::server::manager::manager objManager(bus, OCC_CONTROL_ROOT); + open_power::occ::Manager mgr(bus, eventP); - while (true) - { - bus.process_discard(); - bus.wait(); - } - } - catch (const std::exception& e) - { - using namespace phosphor::logging; - log<level::ERR>(e.what()); - return -1; - } + // Claim the bus since all the house keeping is done now + bus.request_name(OCC_CONTROL_BUSNAME); + + // Wait for requests + sd_event_loop(eventP.get()); return 0; } |