filters/actions: Pass manager to filters/actions

Change-Id: Iaf70fdd5c8cdb64237bbd1bb5f73add645fededb
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/actions.hpp b/actions.hpp
index 57a2f6f..2837e7a 100644
--- a/actions.hpp
+++ b/actions.hpp
@@ -9,6 +9,8 @@
 {
 namespace manager
 {
+class Manager;
+
 namespace actions
 {
 namespace details
@@ -31,10 +33,10 @@
     Base(Base&&) = default;
     Base& operator=(Base&&) = default;
 
-    virtual void operator()() const = 0;
-    virtual void operator()()
+    virtual void operator()(Manager &mgr) const = 0;
+    virtual void operator()(Manager &mgr)
     {
-        const_cast<const Base &>(*this)();
+        const_cast<const Base &>(*this)(mgr);
     }
 };
 
@@ -58,14 +60,14 @@
     Holder& operator=(Holder&&) = default;
     explicit Holder(T &&func) : _func(std::forward<T>(func)) {}
 
-    virtual void operator()() const override
+    virtual void operator()(Manager &mgr) const override
     {
-        _func();
+        _func(mgr);
     }
 
-    virtual void operator()() override
+    virtual void operator()(Manager &mgr) override
     {
-        _func();
+        _func(mgr);
     }
 
     private:
@@ -93,13 +95,13 @@
     Wrapper(Wrapper&&) = default;
     Wrapper& operator=(Wrapper&&) = default;
 
-    void operator()()
+    void operator()(Manager &mgr)
     {
-        (*_ptr)();
+        (*_ptr)(mgr);
     }
-    void operator()() const
+    void operator()(Manager &mgr) const
     {
-        (*_ptr)();
+        (*_ptr)(mgr);
     }
 
     private:
@@ -109,7 +111,7 @@
 } // namespace details
 
 /** @brief The default action.  */
-inline void noop() noexcept { }
+inline void noop(Manager &mgr) noexcept { }
 
 } // namespace actions
 } // namespace manager
diff --git a/filters.hpp b/filters.hpp
index 309fff6..2a3da48 100644
--- a/filters.hpp
+++ b/filters.hpp
@@ -10,6 +10,8 @@
 {
 namespace manager
 {
+
+class Manager;
 namespace filters
 {
 namespace details
@@ -32,10 +34,10 @@
     Base(Base&&) = default;
     Base& operator=(Base&&) = default;
 
-    virtual bool operator()(sdbusplus::message::message &) const = 0;
-    virtual bool operator()(sdbusplus::message::message &msg)
+    virtual bool operator()(sdbusplus::message::message &, Manager &) const = 0;
+    virtual bool operator()(sdbusplus::message::message &msg, Manager &mgr)
     {
-        return const_cast<const Base &>(*this)(msg);
+        return const_cast<const Base &>(*this)(msg, mgr);
     }
 };
 
@@ -59,14 +61,16 @@
     Holder& operator=(Holder&&) = default;
     explicit Holder(T &&func) : _func(std::forward<T>(func)) { }
 
-    virtual bool operator()(sdbusplus::message::message &msg) const override
+    virtual bool operator()(
+            sdbusplus::message::message &msg, Manager &mgr) const override
     {
-        return _func(msg);
+        return _func(msg, mgr);
     }
 
-    virtual bool operator()(sdbusplus::message::message &msg) override
+    virtual bool operator()(
+            sdbusplus::message::message &msg, Manager &mgr) override
     {
-        return _func(msg);
+        return _func(msg, mgr);
     }
 
     private:
@@ -93,13 +97,13 @@
     Wrapper(Wrapper&&) = default;
     Wrapper& operator=(Wrapper&&) = default;
 
-    bool operator()(sdbusplus::message::message &msg)
+    bool operator()(sdbusplus::message::message &msg, Manager &mgr)
     {
-        return (*_ptr)(msg);
+        return (*_ptr)(msg, mgr);
     }
-    bool operator()(sdbusplus::message::message &msg) const
+    bool operator()(sdbusplus::message::message &msg, Manager &mgr) const
     {
-        return (*_ptr)(msg);
+        return (*_ptr)(msg, mgr);
     }
 
     private:
@@ -134,7 +138,7 @@
      * Extract the property from the PropertiesChanged
      * message and run the condition test.
      */
-    bool operator()(sdbusplus::message::message &msg) const
+    bool operator()(sdbusplus::message::message &msg, Manager &) const
     {
         std::map<
             std::string,
@@ -163,7 +167,7 @@
 } // namespace details
 
 /** @brief The default filter.  */
-inline bool none(sdbusplus::message::message &) noexcept
+inline bool none(sdbusplus::message::message &, Manager &) noexcept
 {
     return true;
 }
diff --git a/manager.cpp b/manager.cpp
index 8e185ac..6c15bf0 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -155,8 +155,8 @@
     auto &filter = std::get<1>(args);
     auto &action = std::get<2>(args);
 
-    if(filter(msg)) {
-        action();
+    if(filter(msg, *this)) {
+        action(*this);
     }
 }