Move signals to event triggers

Move the generation and initialization of signals to be included in the
available event triggers. The signal trigger consists of subscribing to
a given signal match where when the signal is received and handled, it
causes the event actions to be called.

Tested:
    All current event signals are still registered and received
    Speed changes occur based on temperature sensor change signals

Change-Id: Iab4ccabb50ad910d5d566bd8c1922109638bd760
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
diff --git a/control/zone.cpp b/control/zone.cpp
index 90350a7..3e06fd0 100644
--- a/control/zone.cpp
+++ b/control/zone.cpp
@@ -319,61 +319,6 @@
 
 void Zone::initEvent(const SetSpeedEvent& event)
 {
-    sdbusplus::message::message nullMsg{nullptr};
-
-    for (auto& sig : std::get<signalsPos>(event))
-    {
-        // Setup signal matches of the property for event
-        std::unique_ptr<EventData> eventData =
-            std::make_unique<EventData>(
-                    std::get<groupPos>(event),
-                    std::get<sigMatchPos>(sig),
-                    std::get<sigHandlerPos>(sig),
-                    std::get<actionsPos>(event)
-            );
-
-        // When match is empty, handle if zone object member
-        if (std::get<sigMatchPos>(sig).empty())
-        {
-            // Set event data for each host group member
-            for (auto it = std::get<groupPos>(event).begin();
-                 it != std::get<groupPos>(event).end(); ++it)
-            {
-                if (it->first == _path)
-                {
-                    // Group member interface in list owned by zone
-                    if (std::find(_ifaces.begin(), _ifaces.end(),
-                        std::get<intfPos>(it->second)) != _ifaces.end())
-                    {
-                        // Store path,interface,property as a managed object
-                        _objects[it->first]
-                                [std::get<intfPos>(it->second)]
-                                [std::get<propPos>(it->second)] =
-                                        eventData.get();
-                    }
-                }
-            }
-        }
-
-        // Initialize the event signal using handler
-        std::get<sigHandlerPos>(sig)(_bus, nullMsg, *this);
-
-        // Subscribe to signal match
-        std::unique_ptr<sdbusplus::server::match::match> match = nullptr;
-        if (!std::get<sigMatchPos>(sig).empty())
-        {
-            match = std::make_unique<sdbusplus::server::match::match>(
-                    _bus,
-                    std::get<sigMatchPos>(sig).c_str(),
-                    std::bind(std::mem_fn(&Zone::handleEvent),
-                              this,
-                              std::placeholders::_1,
-                              eventData.get())
-                );
-        }
-
-        _signalEvents.emplace_back(std::move(eventData), std::move(match));
-    }
     // Enable event triggers
     std::for_each(
         std::get<triggerPos>(event).begin(),
@@ -399,10 +344,10 @@
 
 void Zone::removeEvent(const SetSpeedEvent& event)
 {
-    // Remove signals of the event
-    for (auto& sig : std::get<signalsPos>(event))
+    // Remove triggers of the event
+    for (auto& trig : std::get<triggerPos>(event))
     {
-        auto it = findSignal(sig,
+        auto it = findSignal(trig,
                              std::get<groupPos>(event),
                              std::get<actionsPos>(event));
         if (it != std::end(getSignalEvents()))
@@ -420,7 +365,7 @@
 }
 
 std::vector<SignalEvent>::iterator Zone::findSignal(
-        const Signal& signal,
+        const Trigger& signal,
         const Group& eGroup,
         const std::vector<Action>& eActions)
 {
@@ -429,10 +374,6 @@
     {
         const auto& seEventData = *std::get<signalEventDataPos>(*it);
         if (eGroup == std::get<eventGroupPos>(seEventData) &&
-            std::get<sigMatchPos>(signal) ==
-                std::get<eventMatchPos>(seEventData) &&
-            std::get<sigHandlerPos>(signal).target_type().name() ==
-                std::get<eventHandlerPos>(seEventData).target_type().name() &&
             eActions.size() == std::get<eventActionsPos>(seEventData).size())
         {
             // TODO openbmc/openbmc#2328 - Use the function target