VPD-Manager app skeleton

This commit implements the outline of VPD Manager
application.
Manager app provides multiple functionality over DBUS
to manage VPD data in the system.

This commit does not  implements the functionality, it
just implement the prototype of functionality that will
be provided by the app.

To build the app:
meson build
ninja -C build

Signed-off-by: Sunny Srivastava <sunnsr25@in.ibm.com>
Change-Id: Iefc86468d0b7179c10764d35399189150773eada
diff --git a/vpd-manager/manager.cpp b/vpd-manager/manager.cpp
new file mode 100644
index 0000000..f34ab68
--- /dev/null
+++ b/vpd-manager/manager.cpp
@@ -0,0 +1,69 @@
+#include "config.h"
+
+#include "manager.hpp"
+
+#include "parser.hpp"
+
+#include <exception>
+#include <iostream>
+#include <vector>
+
+namespace openpower
+{
+namespace vpd
+{
+namespace manager
+{
+Manager::Manager(sdbusplus::bus::bus&& bus, const char* busName,
+                 const char* objPath, const char* iFace) :
+    ServerObject<ManagerIface>(bus, objPath),
+    _bus(std::move(bus)), _manager(_bus, objPath)
+{
+    _bus.request_name(busName);
+}
+
+void Manager::run()
+{
+    while (true)
+    {
+        try
+        {
+            _bus.process_discard();
+            // wait for event
+            _bus.wait();
+        }
+        catch (const std::exception& e)
+        {
+            std::cerr << e.what() << "\n";
+        }
+    }
+}
+
+void Manager::writeKeyword(const sdbusplus::message::object_path path,
+                           const std::string recordName,
+                           const std::string keyword, const Binary value)
+{
+    // implement the interface to write keyword VPD data
+}
+
+std::vector<sdbusplus::message::object_path>
+    Manager::getFRUsByUnexpandedLocationCode(const std::string locationCode,
+                                             const uint16_t nodeNumber)
+{
+    // implement the interface
+}
+
+std::vector<sdbusplus::message::object_path>
+    Manager::getFRUsByExpandedLocationCode(const std::string locationCode)
+{
+    // implement the interface
+}
+
+std::string Manager::getExpandedLocationCode(const std::string locationCode,
+                                             const uint16_t nodeNumber)
+{
+    // implement the interface
+}
+} // namespace manager
+} // namespace vpd
+} // namespace openpower