Add support for processing signal event triggers

Process signal event triggers' list of conditions on a group and perform
the defined actions.

This re-uses the following struct directly from
phosphor-inventory-manager:
--struct PropertyChangedCondition

Change-Id: I98552f3d168cfcd9f0c1c357289b7000374ae60e
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
diff --git a/src/monitor.cpp b/src/monitor.cpp
index 2864924..aeb1fe5 100644
--- a/src/monitor.cpp
+++ b/src/monitor.cpp
@@ -16,7 +16,26 @@
 Monitor::Monitor(sdbusplus::bus::bus& bus) :
     bus(bus)
 {
+    // Process thru given events that are type 'signal'
+    for (auto& event : events)
+    {
+        for (auto& pEvent : std::get<std::vector<std::shared_ptr<Event>>>(event))
+        {
+            if (pEvent->trigger != Event::Trigger::SIGNAL)
+            {
+                continue;
+            }
 
+            auto signalEvent = static_cast<SignalEvent*>(pEvent.get());
+            eventArgs.emplace_back(std::make_unique<eventArg>(this,
+                                                              signalEvent,
+                                                              &event));
+            matches.emplace_back(bus,
+                                 signalEvent->signature,
+                                 handleSignal,
+                                 eventArgs.back().get());
+        }
+    }
 }
 
 void Monitor::processStart() noexcept
@@ -36,6 +55,19 @@
     }
 }
 
+int Monitor::handleSignal(sd_bus_message* msg,
+                          void* data,
+                          sd_bus_error* err)
+{
+    auto sdbpMsg = sdbusplus::message::message(msg);
+    auto& eventArg = *static_cast<Monitor::eventArg*>(data);
+    std::get<0>(eventArg)->handleEvent(
+        sdbpMsg,
+        static_cast<const SignalEvent&>(*std::get<1>(eventArg)),
+        *std::get<2>(eventArg));
+    return 0;
+}
+
 void Monitor::handleEvent(sdbusplus::message::message& msg,
                           const Event& event,
                           const std::tuple<std::vector<std::shared_ptr<Event>>,