Add property changed signal handler

Enable the control application to handle property changed signals to set
or update a cached set of these properties

Change-Id: Ib84ffe1e801ee7dd85d17fdbb122d124d307dbd3
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
diff --git a/control/zone.hpp b/control/zone.hpp
index 985a46d..601c002 100644
--- a/control/zone.hpp
+++ b/control/zone.hpp
@@ -1,6 +1,7 @@
 #pragma once
 #include <vector>
 #include <sdbusplus/bus.hpp>
+#include <sdbusplus/server.hpp>
 #include "fan.hpp"
 #include "types.hpp"
 
@@ -56,6 +57,20 @@
             }
         }
 
+        /**
+         * @brief Sets a given object's property value
+         *
+         * @param[in] object - Name of the object containing the property
+         * @param[in] property - Property name
+         * @param[in] value - Property value
+         */
+        void setPropertyValue(const char* object,
+                              const char* property,
+                              bool value)
+        {
+            _properties[object][property] = value;
+        };
+
     private:
 
         /**
@@ -77,6 +92,41 @@
          * The vector of fans in this zone
          */
         std::vector<std::unique_ptr<Fan>> _fans;
+
+        /**
+         * @brief Map of object property values
+         */
+        std::map<std::string, std::map<std::string, bool>> _properties;
+
+        /**
+         * @brief List of signal event arguments
+         */
+        std::vector<std::unique_ptr<SignalEvent>> _signalEvents;
+
+        /**
+         * @brief list of Dbus matches for callbacks
+         */
+        std::vector<sdbusplus::server::match::match> _matches;
+
+        /**
+         * @brief Dbus signal change handler
+         *
+         * @param[in] msg - Data associated with the subscribed signal
+         * @param[in] data - Pointer to the event sensor's data
+         * @param[in] err - Contains any sdbus error reference if occurred
+         */
+        static int signalHandler(sd_bus_message* msg,
+                                 void* data,
+                                 sd_bus_error* err);
+
+         /**
+          * @brief Envokes the assigned handler and action
+          *
+          * @param[in] msg - Expanded sdbusplus message data
+          * @param[in] eventData - The event's data
+          */
+         void handleEvent(sdbusplus::message::message& msg,
+                          const Handler& handler);
 };
 
 }