summaryrefslogtreecommitdiffstats
path: root/app.cpp
diff options
context:
space:
mode:
authorVishwanatha Subbanna <vishwa@linux.vnet.ibm.com>2017-06-29 18:35:00 +0530
committerVishwanatha Subbanna <vishwa@linux.vnet.ibm.com>2017-07-29 23:57:59 +0530
commitee4d83dfc7b6cf3b5979541ab5b1918b68e6bbdb (patch)
tree4d186ddf133d77880e857fccdddb71fcc155a6bf /app.cpp
parent554d60059e7d0b699b3cdcbe8de2c341613e9931 (diff)
downloadopenpower-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.cpp50
1 files changed, 31 insertions, 19 deletions
diff --git a/app.cpp b/app.cpp
index 449bea3..ee02949 100644
--- a/app.cpp
+++ b/app.cpp
@@ -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;
}
OpenPOWER on IntegriCloud