diff options
author | Ratan Gupta <ratagupt@in.ibm.com> | 2017-10-06 21:37:01 +0530 |
---|---|---|
committer | Ratan Gupta <ratagupt@in.ibm.com> | 2018-02-23 20:05:18 +0530 |
commit | 3e84ec6645bcea669805947f1409b58b4b0d9f72 (patch) | |
tree | ff1adf181670223651713503ecc06887f403e821 /src/event_manager.cpp | |
parent | cd22786a280372a2e31c61dffabae204a8ab9d8b (diff) | |
download | phosphor-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.cpp | 44 |
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() |