Implement create function in event manager

Implement the logging event interface.

Create the dbus event object based on the event type.

Change-Id: Idfa9e5c43f170d904fd25f22d73e0509b1785fc9
Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
diff --git a/src/event_manager.cpp b/src/event_manager.cpp
index ef2098a..9102137 100644
--- a/src/event_manager.cpp
+++ b/src/event_manager.cpp
@@ -13,9 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
+#include "config.h"
 #include "event.hpp"
 #include "event_manager.hpp"
-#include "config.h"
+
+#include <experimental/filesystem>
 
 namespace phosphor
 {
@@ -24,11 +27,46 @@
 
 void Manager::create(
     const std::string& eventName,
+    const std::string& eventMessage,
     const std::string& objectPath,
     const std::string& propertyName,
-    const std::string& propertyvalue)
+    const std::string& propertyValue)
 {
-    // TODO Implement it in later commit.
+    using namespace std::string_literals;
+    namespace fs = std::experimental::filesystem;
+
+    auto msg = eventMessage;
+    std::vector<std::string> additionalData;
+
+    auto propVal = propertyName + "=" + propertyValue;
+    auto path = "path="s + objectPath;
+
+    additionalData.push_back(std::move(path));
+    additionalData.push_back(std::move(propVal));
+
+    auto& eventQueue = eventMap[eventName];
+
+    // get the last event entry for this event
+    // to generate the id.
+    auto id = 0;
+    if (eventQueue.size() > 0)
+    {
+        fs::path path(eventQueue.back()->objectPath);
+        id = std::stoi(std::string(path.filename().c_str()));
+        id ++;
+    }
+
+    auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(
+                  std::chrono::system_clock::now().time_since_epoch()).count();
+
+    auto objPath =  std::string(OBJ_EVENT) + '/' + eventName + '/' +
+                        std::to_string(id);
+
+    eventQueue.emplace(std::make_unique<Entry>(
+                       objPath,
+                       ms, // Milliseconds since 1970
+                       std::move(msg),
+                       std::move(additionalData)));
 }
 
 Manager& getManager()