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);
}
}