Implementation of create interface.

Both the external and internal Dump managers define "Create"
interfaces. This commit implements these.

Change-Id: If857ec6ea7267fd72e9b420e6b44fa68b6abab66
Signed-off-by: Jayanth Othayoth <ojayanth@in.ibm.com>
diff --git a/dump_manager_main.cpp b/dump_manager_main.cpp
index 39398e7..cd1d83b 100644
--- a/dump_manager_main.cpp
+++ b/dump_manager_main.cpp
@@ -1,20 +1,51 @@
-#include <sdbusplus/bus.hpp>
-#include <sdbusplus/server/manager.hpp>
-#include "config.h"
+#include <phosphor-logging/elog-errors.hpp>
 
-int main(int argc, char *argv[])
+#include "xyz/openbmc_project/Common/error.hpp"
+#include "config.h"
+#include "dump_manager.hpp"
+#include "dump_internal.hpp"
+
+int main(int argc, char* argv[])
 {
     auto bus = sdbusplus::bus::new_default();
+    using namespace phosphor::logging;
+    using InternalFailure =
+        sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
+
+    sd_event* event = nullptr;
+    auto rc = sd_event_default(&event);
+    if (rc < 0)
+    {
+        log<level::ERR>("Error occurred during the sd_event_default",
+                        entry("rc=%d", rc));
+        report<InternalFailure>();
+        return rc;
+    }
+    phosphor::dump::EventPtr eventP{event};
+    event = nullptr;
 
     // Add sdbusplus ObjectManager for the 'root' path of the DUMP manager.
     sdbusplus::server::manager::manager objManager(bus, DUMP_OBJPATH);
-
     bus.request_name(DUMP_BUSNAME);
 
-    while(true)
+    try
     {
-        bus.process_discard();
-        bus.wait();
+        phosphor::dump::Manager manager(bus, eventP, DUMP_OBJPATH);
+        phosphor::dump::internal::Manager mgr(bus, OBJ_INTERNAL);
+        bus.attach_event(eventP.get(), SD_EVENT_PRIORITY_NORMAL);
+        auto rc = sd_event_loop(eventP.get());
+        if (rc < 0)
+        {
+            log<level::ERR>("Error occurred during the sd_event_loop",
+                            entry("rc=%d", rc));
+            elog<InternalFailure>();
+        }
+    }
+
+    catch (InternalFailure& e)
+    {
+        commit<InternalFailure>();
+        return -1;
     }
 
     return 0;