From cd22786a280372a2e31c61dffabae204a8ab9d8b Mon Sep 17 00:00:00 2001 From: Ratan Gupta Date: Fri, 6 Oct 2017 21:27:13 +0530 Subject: Implement event manager class On handling of property change event, If callback is of type event then event manager would be asked to create the event dbus objects. Change-Id: I7f1d365d7f44a1cca54516e9ef555bb132d6b063 Signed-off-by: Ratan Gupta --- src/Makefile.am | 3 ++- src/event_manager.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ src/event_manager.hpp | 42 ++++++++++++++++++++++++++++++++++++++++++ src/main.cpp | 13 ++++++++++++- 4 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 src/event_manager.cpp create mode 100644 src/event_manager.hpp (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index cf91619..94f81b8 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -10,7 +10,8 @@ phosphor_dbus_monitor_SOURCES = \ elog.cpp \ main.cpp \ propertywatch.cpp \ - resolve_errors.cpp + resolve_errors.cpp \ + event_manager.cpp phosphor_dbus_monitor_LDADD = \ $(SDBUSPLUS_LIBS) \ $(PHOSPHOR_DBUS_INTERFACES_LIBS) \ diff --git a/src/event_manager.cpp b/src/event_manager.cpp new file mode 100644 index 0000000..ef2098a --- /dev/null +++ b/src/event_manager.cpp @@ -0,0 +1,41 @@ +/** + * Copyright © 2017 IBM Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "event.hpp" +#include "event_manager.hpp" +#include "config.h" + +namespace phosphor +{ +namespace events +{ + +void Manager::create( + const std::string& eventName, + const std::string& objectPath, + const std::string& propertyName, + const std::string& propertyvalue) +{ + // TODO Implement it in later commit. +} + +Manager& getManager() +{ + static Manager mgr; + return mgr; +} + +} // namespace events +} // namespace phosphor diff --git a/src/event_manager.hpp b/src/event_manager.hpp new file mode 100644 index 0000000..3d1f8d1 --- /dev/null +++ b/src/event_manager.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include + +namespace phosphor +{ +namespace events +{ + +/** @class Manager + * @brief OpenBMC Event manager implementation. + */ +class Manager +{ + public: + Manager() = default; + Manager(const Manager&) = delete; + Manager& operator=(const Manager&) = delete; + Manager(Manager&&) = default; + Manager& operator=(Manager&&) = default; + virtual ~Manager() = default; + + /** @brief Create the D-Bus Event object. + * @detail Add the objectPath,propertyName, propertyValue + * as additional data of the event object. + * @param[in] eventName - Name of the event. + * @param[in] objectPath - Path of the D-Bus object. + * @param[in] propertyName - Name of the property. + * @param[in] propertyValue - Value of the property. + */ + void create( + const std::string& eventName, + const std::string& objectPath, + const std::string& propertyName, + const std::string& propertyValue); + +}; + +Manager& getManager(); + +} // namespace events +} // namespace phosphor diff --git a/src/main.cpp b/src/main.cpp index 08cd849..5e191e1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,8 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include "sdbusplus.hpp" + +#include "config.h" #include "generated.hpp" +#include "sdbusplus.hpp" + +#include +#include using namespace phosphor::dbus::monitoring; @@ -32,6 +37,12 @@ struct Loop int main(void) { + auto& bus = SDBusPlus::getBus(); + + // Add sdbusplus Object Manager for the 'root' path of events. + sdbusplus::server::manager::manager objManager(bus, OBJ_EVENT); + bus.request_name(BUSNAME_EVENT); + for (auto& watch : ConfigPropertyWatches::get()) { watch->start(); -- cgit v1.2.1