summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRatan Gupta <ratagupt@in.ibm.com>2017-10-06 21:27:13 +0530
committerRatan Gupta <ratagupt@in.ibm.com>2018-02-23 20:05:18 +0530
commitcd22786a280372a2e31c61dffabae204a8ab9d8b (patch)
tree1ce61d893b4f212dca25cca792aa5a5e2035fba1
parentef69ac02f480902f61869ea4d2c08f6aa786786b (diff)
downloadphosphor-dbus-monitor-cd22786a280372a2e31c61dffabae204a8ab9d8b.zip
phosphor-dbus-monitor-cd22786a280372a2e31c61dffabae204a8ab9d8b.tar.gz
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 <ratagupt@in.ibm.com>
-rw-r--r--configure.ac13
-rw-r--r--src/Makefile.am3
-rw-r--r--src/event_manager.cpp41
-rw-r--r--src/event_manager.hpp42
-rw-r--r--src/main.cpp13
5 files changed, 110 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac
index 593fbb7..6bc253f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -21,6 +21,11 @@ PKG_CHECK_MODULES([SDBUSPLUS], [sdbusplus],, AC_MSG_ERROR(["Requires sdbusplus p
PKG_CHECK_MODULES([PHOSPHOR_DBUS_INTERFACES], [phosphor-dbus-interfaces],, AC_MSG_ERROR(["Requires phosphor-dbus-interfaces package."]))
PKG_CHECK_MODULES([PHOSPHOR_LOGGING], [phosphor-logging],, AC_MSG_ERROR(["Requires phosphor-logging."]))
+# Check for sdbus++
+AC_PATH_PROG([SDBUSPLUSPLUS], [sdbus++])
+AS_IF([test "x$SDBUSPLUSPLUS" == "x"],
+ AC_MSG_ERROR(["Requires sdbus++"]))
+
# Checks for typedefs, structures, and compiler characteristics.
AX_CXX_COMPILE_STDCXX_14([noext])
AX_APPEND_COMPILE_FLAGS([-fpic -Wall -Werror], [CXXFLAGS])
@@ -50,6 +55,14 @@ AS_IF([test "x$enable_oe_sdk" == "xyes"],
AC_SUBST([OESDK_TESTCASE_FLAGS], [$testcase_flags])
)
+AC_ARG_VAR(OBJ_EVENT, [The event manager D-Bus object path])
+AS_IF([test "x$OBJ_EVENT" == "x"], [OBJ_EVENT="/xyz/openbmc_project/events"])
+AC_DEFINE_UNQUOTED([OBJ_EVENT], ["$OBJ_EVENT"], [The event manager D-Bus object path])
+
+AC_ARG_VAR(BUSNAME_EVENT, [The D-Bus busname to own])
+AS_IF([test "x$BUSNAME_EVENT" == "x"], [BUSNAME_EVENT="xyz.openbmc_project.Events"])
+AC_DEFINE_UNQUOTED([BUSNAME_EVENT], ["$BUSNAME_EVENT"], [The D-Bus busname to own])
+
AC_ARG_VAR(YAML_PATH, [The path to the yaml config files.])
AS_IF([test "x$YAML_PATH" == "x"], [YAML_PATH="\${top_srcdir}/src/example"])
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 <sdbusplus/bus.hpp>
+
+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 <sdbusplus/bus.hpp>
+#include <sdbusplus/server/manager.hpp>
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();
OpenPOWER on IntegriCloud