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()