summaryrefslogtreecommitdiffstats
path: root/src/event_manager.cpp
diff options
context:
space:
mode:
authorRatan Gupta <ratagupt@in.ibm.com>2017-10-06 21:37:01 +0530
committerRatan Gupta <ratagupt@in.ibm.com>2018-02-23 20:05:18 +0530
commit3e84ec6645bcea669805947f1409b58b4b0d9f72 (patch)
treeff1adf181670223651713503ecc06887f403e821 /src/event_manager.cpp
parentcd22786a280372a2e31c61dffabae204a8ab9d8b (diff)
downloadphosphor-dbus-monitor-3e84ec6645bcea669805947f1409b58b4b0d9f72.tar.gz
phosphor-dbus-monitor-3e84ec6645bcea669805947f1409b58b4b0d9f72.zip
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>
Diffstat (limited to 'src/event_manager.cpp')
-rw-r--r--src/event_manager.cpp44
1 files changed, 41 insertions, 3 deletions
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 @@ namespace events
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()
OpenPOWER on IntegriCloud