From a2e9cdf67e7f8537a1f98d585b5a09f21e19d0ea Mon Sep 17 00:00:00 2001 From: Brad Bishop Date: Wed, 28 Jun 2017 14:06:27 -0400 Subject: Remove dead code Remove a number of unused files. Change-Id: If7e40d2be7eb3f5d84538a3c86f911df268a1f34 Signed-off-by: Brad Bishop --- src/Makefile.am | 2 - src/actions.hpp | 35 ------- src/conditions.hpp | 64 ------------- src/data_types.hpp | 19 ---- src/events.hpp | 106 ---------------------- src/functor.cpp | 78 ---------------- src/functor.hpp | 262 ----------------------------------------------------- src/main.cpp | 1 - src/monitor.cpp | 108 ---------------------- src/monitor.hpp | 92 ------------------- 10 files changed, 767 deletions(-) delete mode 100644 src/actions.hpp delete mode 100644 src/conditions.hpp delete mode 100644 src/events.hpp delete mode 100644 src/functor.cpp delete mode 100644 src/functor.hpp delete mode 100644 src/monitor.cpp delete mode 100644 src/monitor.hpp diff --git a/src/Makefile.am b/src/Makefile.am index c886d3a..d530b46 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -6,10 +6,8 @@ AM_CPPFLAGS = -iquote ${top_srcdir} sbin_PROGRAMS = phosphor-dbus-monitor phosphor_dbus_monitor_SOURCES = \ - functor.cpp \ journal.cpp \ main.cpp \ - monitor.cpp \ propertywatch.cpp phosphor_dbus_monitor_LDADD = \ $(SDBUSPLUS_LIBS) \ diff --git a/src/actions.hpp b/src/actions.hpp deleted file mode 100644 index e5269d1..0000000 --- a/src/actions.hpp +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -#include - -namespace phosphor -{ -namespace dbus -{ -namespace monitoring -{ -namespace action -{ - -using namespace phosphor::logging; - -/** - * @brief An action to log an error with the given message - * - * @param[in] msg - The message to log - * - * @return Lambda function - * A lambda function to perform the log_error function - */ -inline auto log_error(const char* msg) -{ - return [=](auto&, auto&) - { - log(msg); - }; -} - -} // namespace action -} // namespace monitoring -} // namespace dbus -} // namespace phosphor diff --git a/src/conditions.hpp b/src/conditions.hpp deleted file mode 100644 index b613679..0000000 --- a/src/conditions.hpp +++ /dev/null @@ -1,64 +0,0 @@ -#pragma once - -#include -#include "data_types.hpp" - -namespace phosphor -{ -namespace dbus -{ -namespace monitoring -{ -namespace condition -{ - -/** - * @brief A condition used to trigger an action when a number of items are at - * or above a given value - * @details A given group of items is updated with their last known item - * value, which then the entire group is checked if there are a given number of - * them at or above a value which would cause the condition to be true - * - * @param[in] items - Group of items - * @param[in] path - Path of a item within the group - * @param[in] count - Number of items needed at or above value - * @param[in] value - Value of items to be at or above - * - * @return Lambda function - * A lambda function to determine if the number of items within the group - * are at or above the given value - */ -template -auto countAtOrAbove(Group& items, const char* path, size_t count, T&& value) -{ - return [&items, - path, - count, - value = std::forward(value)](T&& arg) - { - Group::iterator it = - std::find_if(items.begin(), - items.end(), - [&path](auto const& item) - { - return std::get<0>(item) == path; - }); - if (it != std::end(items)) - { - std::get<1>(*it) = arg; - } - size_t condCount = - std::count_if(items.begin(), - items.end(), - [&value](auto const& item) - { - return std::get<1>(item) >= value; - }); - return condCount >= count; - }; -} - -} // namespace condition -} // namespace monitoring -} // namespace dbus -} // namespace phosphor diff --git a/src/data_types.hpp b/src/data_types.hpp index 439045e..5eab4b2 100644 --- a/src/data_types.hpp +++ b/src/data_types.hpp @@ -1,8 +1,6 @@ #pragma once -#include #include -#include #include #include "tupleref.hpp" @@ -15,23 +13,6 @@ namespace dbus namespace monitoring { -class Monitor; - -/** @brief The possible item value types */ -using Value = int64_t; - -/** @brief A list of what constructs a unique item and its value */ -using Group = std::vector>; - -/** @brief A conditional function type for item(s) conditions */ -using Condition = std::function; - -/** @brief A void function type for actions based condition(s) */ -using Action = std::function; - /** @brief A map with references as keys. */ template using RefKeyMap = std::map, Value, std::less>; diff --git a/src/events.hpp b/src/events.hpp deleted file mode 100644 index 684a0a8..0000000 --- a/src/events.hpp +++ /dev/null @@ -1,106 +0,0 @@ -#pragma once - -#include "data_types.hpp" - -namespace phosphor -{ -namespace dbus -{ -namespace monitoring -{ - -/** - * @class Event - * @brief An item monitoring triggered event - * @details An event with an associated list of conditions to check - */ -class Event : public std::vector -{ - public: - /** - * @brief Types of triggers of the event - */ - enum class Trigger - { - START, - SIGNAL - }; - - Event() = delete; - Event(const Event&) = delete; - Event(Event&&) = delete; - Event& operator=(const Event&) = delete; - Event& operator=(Event&&) = delete; - virtual ~Event() = default; - - /** - * @brief Constructs an event with given conditions and trigger - * - * @param[in] conditions - Conditions for the event - * @param[in] t - Type of trigger of the event - */ - Event(const std::vector& conditions, - Trigger t) : - std::vector(conditions), - trigger(t) - { - // Nothing to do here - } - - /** @brief Event trigger type */ - Trigger trigger; -}; - -class StartEvent : public Event -{ - public: - StartEvent() = delete; - StartEvent(const StartEvent&) = delete; - StartEvent(StartEvent&&) = delete; - StartEvent& operator=(const StartEvent&) = delete; - StartEvent& operator=(StartEvent&&) = delete; - ~StartEvent() = default; - - /** - * @brief Constructs a derived application started event - * - * @param[in] conditions - Conditions for the event - */ - explicit StartEvent(const std::vector& conditions) : - Event(conditions, Trigger::START) - { - // Nothing to do here - } -}; - -class SignalEvent : public Event -{ - public: - SignalEvent() = delete; - SignalEvent(const SignalEvent&) = delete; - SignalEvent(SignalEvent&&) = delete; - SignalEvent& operator=(const SignalEvent&) = delete; - SignalEvent& operator=(SignalEvent&&) = delete; - ~SignalEvent() = default; - - /** - * @brief Constructs a derived Dbus signal event - * - * @param[in] signature - Dbus object signature - * @param[in] conditions - Conditions for the event - */ - SignalEvent(const char* signature, - const std::vector& conditions) : - Event(conditions, Trigger::SIGNAL), - signature(signature) - { - // Nothing to do here - } - - /** @brief Dbus object signature */ - const char* signature; -}; - -} // namespace monitoring -} // namespace dbus -} // namespace phosphor diff --git a/src/functor.cpp b/src/functor.cpp deleted file mode 100644 index 72ff65e..0000000 --- a/src/functor.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/** - * Copyright © 2017 IBM Corporation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "functor.hpp" -#include -#include - -namespace phosphor -{ -namespace dbus -{ -namespace monitoring -{ - -bool PropertyConditionBase::operator()(sdbusplus::bus::bus& bus, - sdbusplus::message::message&, - Monitor& mon) const -{ - std::string host; - - if (_service) - { - host.assign(_service); - } - else - { - auto mapperCall = bus.new_method_call( - "xyz.openbmc_project.ObjectMapper", - "/xyz/openbmc_project/object_mapper", - "xyz.openbmc_project.ObjectMapper", - "GetObject"); - mapperCall.append(_path); - mapperCall.append(std::vector({_iface})); - auto mapperResponseMsg = bus.call(mapperCall); - if (mapperResponseMsg.is_method_error()) - { - return false; - } - - std::map> mapperResponse; - mapperResponseMsg.read(mapperResponse); - if (mapperResponse.empty()) - { - return false; - } - - host = mapperResponse.begin()->first; - } - auto hostCall = bus.new_method_call(host.c_str(), - _path.c_str(), - "org.freedesktop.DBus.Properties", - "Get"); - hostCall.append(_iface); - hostCall.append(_property); - auto hostResponseMsg = bus.call(hostCall); - if (hostResponseMsg.is_method_error()) - { - return false; - } - - return eval(hostResponseMsg); -} - -} // namespace monitoring -} // namespace dbus -} // namespace phosphor diff --git a/src/functor.hpp b/src/functor.hpp deleted file mode 100644 index 3faf39b..0000000 --- a/src/functor.hpp +++ /dev/null @@ -1,262 +0,0 @@ -#pragma once - -#include "data_types.hpp" - -namespace phosphor -{ -namespace dbus -{ -namespace monitoring -{ - -class Monitor; - -/** - * @brief Create a condition function object - * - * @param[in] condition - The condition being created - * - * @return - The created condition function object - */ -template -auto make_condition(T&& condition) -{ - return Condition(std::forward(condition)); -} - -/** - * @brief Create an action function object - * - * @param[in] action - The action being created - * - * @return - The created action function object - */ -template -auto make_action(T&& action) -{ - return Action(std::forward(action)); -} - -/** - * @struct Property Changed Condtion - * @brief A match filter functor to test Dbus property value changed signals - * - * @tparam T - The type of the property value - * @tparam U - The type of the condition - */ -template -struct PropertyChangedCondition -{ - PropertyChangedCondition() = delete; - ~PropertyChangedCondition() = default; - PropertyChangedCondition(const PropertyChangedCondition&) = default; - PropertyChangedCondition& operator=(const PropertyChangedCondition&) = - default; - PropertyChangedCondition(PropertyChangedCondition&&) = default; - PropertyChangedCondition& operator=(PropertyChangedCondition&&) = - default; - PropertyChangedCondition(const char* iface, const char* property, - U&& condition) : - _iface(iface), - _property(property), - _condition(std::forward(condition)) { } - - /** @brief Test a property value. - * - * Extract the property from the PropertiesChanged - * message and run the condition test. - */ - bool operator()( - sdbusplus::bus::bus&, - sdbusplus::message::message& msg, - Monitor&) const - { - std::map> properties; - const char* iface = nullptr; - - msg.read(iface); - if (!iface || strcmp(iface, _iface)) - { - return false; - } - - msg.read(properties); - auto it = properties.find(_property); - if (it == properties.cend()) - { - return false; - } - - return _condition( - std::forward(it->second.template get())); - } - -private: - const char* _iface; - const char* _property; - U _condition; -}; - -/** - * @struct Property Condition Base - * @brief A match filter functor to test property values - * @details The base property condition struct that retrieves the property value - * for a property condition - */ -struct PropertyConditionBase -{ - PropertyConditionBase() = delete; - virtual ~PropertyConditionBase() = default; - PropertyConditionBase(const PropertyConditionBase&) = default; - PropertyConditionBase& operator=(const PropertyConditionBase&) = default; - PropertyConditionBase(PropertyConditionBase&&) = default; - PropertyConditionBase& operator=(PropertyConditionBase&&) = default; - - /** @brief Constructor - * - * The service argument can be nullptr. If something - * else is provided the function will call the the - * service directly. If omitted, the function will - * look up the service in the ObjectMapper. - * - * @param path - The path of the object containing - * the property to be tested. - * @param iface - The interface hosting the property - * to be tested. - * @param property - The property to be tested. - * @param service - The DBus service hosting the object. - */ - PropertyConditionBase( - const char* path, - const char* iface, - const char* property, - const char* service) : - _path(path ? path : std::string()), - _iface(iface), - _property(property), - _service(service) {} - - /** @brief Forward comparison to type specific implementation. */ - virtual bool eval(sdbusplus::message::message&) const = 0; - - /** @brief Test a property value. - * - * Make a DBus call and test the value of any property. - */ - bool operator()( - sdbusplus::bus::bus&, - sdbusplus::message::message&, - Monitor&) const; - -private: - std::string _path; - std::string _iface; - std::string _property; - const char* _service; -}; - -/** - * @struct Property Condtion - * @brief A match filter functor to test property values - * - * @tparam T - The type of the property value - * @tparam U - The type of the condition - */ -template -struct PropertyCondition final : public PropertyConditionBase -{ - PropertyCondition() = delete; - ~PropertyCondition() = default; - PropertyCondition(const PropertyCondition&) = default; - PropertyCondition& operator=(const PropertyCondition&) = default; - PropertyCondition(PropertyCondition&&) = default; - PropertyCondition& operator=(PropertyCondition&&) = default; - - /** @brief Constructor - * - * The service argument can be nullptr. If something - * else is provided the function will call the the - * service directly. If omitted, the function will - * look up the service in the ObjectMapper. - * - * @param path - The path of the object containing - * the property to be tested. - * @param iface - The interface hosting the property - * to be tested. - * @param property - The property to be tested. - * @param condition - The test to run on the property. - * @param service - The DBus service hosting the object. - */ - PropertyCondition( - const char* path, - const char* iface, - const char* property, - U&& condition, - const char* service) : - PropertyConditionBase(path, iface, property, service), - _condition(std::forward(condition)) {} - - /** @brief Test a property value. - * - * Make a DBus call and test the value of any property. - */ - bool eval(sdbusplus::message::message& msg) const override - { - sdbusplus::message::variant value; - msg.read(value); - return _condition(std::forward(value.template get())); - } - -private: - U _condition; -}; - -/** - * @brief Used to process a Dbus property changed signal event - * - * @param[in] iface - Item value interface - * @param[in] property - Item value property - * @param[in] condition - Condition function to perform - * - * @tparam T - The type of the property - * @tparam U - The type of the condition - */ -template -auto propertySignal(const char* iface, - const char* property, - U&& condition) -{ - return PropertyChangedCondition(iface, - property, - std::move(condition)); -} - -/** - * @brief Used to process conditions on a start event - * - * @param[in] path - Item's Dbus path - * @param[in] iface - Item value interface - * @param[in] property - Item value property - * @param[in] condition - Condition function to perform - * @param[in] service - Service to lookup Dbus object - * - * @tparam T - The type of the property - * @tparam U - The type of the condition - */ -template -auto propertyStart(const char* path, - const char* iface, - const char* property, - U&& condition, - const char* service = nullptr) -{ - return PropertyCondition(path, - iface, - property, - std::move(condition), - service); -} - -} // namespace monitoring -} // namespace dbus -} // namespace phosphor diff --git a/src/main.cpp b/src/main.cpp index 79c4062..ffa9f8d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,7 +15,6 @@ */ #include "sdbusplus.hpp" #include "generated.hpp" -#include "monitor.hpp" using namespace phosphor::dbus::monitoring; diff --git a/src/monitor.cpp b/src/monitor.cpp deleted file mode 100644 index 2d4d649..0000000 --- a/src/monitor.cpp +++ /dev/null @@ -1,108 +0,0 @@ -/** - * Copyright © 2017 IBM Corporation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "monitor.hpp" - -namespace phosphor -{ -namespace dbus -{ -namespace monitoring -{ - -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>>(event)) - { - if (pEvent->trigger != Event::Trigger::SIGNAL) - { - continue; - } - - auto signalEvent = static_cast(pEvent.get()); - eventArgs.emplace_back(std::make_unique(this, - signalEvent, - &event)); - matches.emplace_back(bus, - signalEvent->signature, - handleSignal, - eventArgs.back().get()); - } - } -} - -void Monitor::processStart() noexcept -{ - sdbusplus::message::message nullMsg{nullptr}; - - // Process thru given events that are type 'start' - for (auto& event : events) - { - for (auto& pEvent : std::get>>(event)) - { - if (pEvent->trigger == Event::Trigger::START) - { - handleEvent(nullMsg, *pEvent, event); - } - } - } -} - -int Monitor::handleSignal(sd_bus_message* msg, - void* data, - sd_bus_error* err) -{ - auto sdbpMsg = sdbusplus::message::message(msg); - auto& eventArg = *static_cast(data); - std::get<0>(eventArg)->handleEvent( - sdbpMsg, - static_cast(*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>& eventDef) -{ - // Iterate over conditions - for (auto& cond : event) - { - if (!cond(bus, msg, *this)) - { - continue; - } - // Perform defined actions - for (auto& act : std::get<1>(eventDef)) - { - act(bus, *this); - } - return; - } -} - -const std::vector< - std::tuple< - std::vector>, - std::vector>> Monitor::events; - -} // namespace monitoring -} // namespace dbus -} // namespace phosphor diff --git a/src/monitor.hpp b/src/monitor.hpp deleted file mode 100644 index 63afebe..0000000 --- a/src/monitor.hpp +++ /dev/null @@ -1,92 +0,0 @@ -#pragma once - -#include -#include -#include "events.hpp" - -namespace phosphor -{ -namespace dbus -{ -namespace monitoring -{ - -/** - * @class Monitor - * @brief OpenBMC DBus Monitoring application - * @details A configurable application to perform a set of actions based on one - * or more conditions for items within a group - */ -class Monitor -{ - public: - Monitor() = delete; - Monitor(const Monitor&) = delete; - Monitor(Monitor&&) = default; - Monitor& operator=(const Monitor&) = delete; - Monitor& operator=(Monitor&&) = default; - ~Monitor() = default; - - /** - * @brief Constructs monitor object - * - * @param[in] bus - Dbus bus object - */ - explicit Monitor(sdbusplus::bus::bus& bus); - - /** - * @brief Process events triggered by the application starting - */ - void processStart() noexcept; - - /** - * @brief Handle an event being processed - * - * @param[in] msg - Dbus msg - * @param[in] event - Event to be handled - * @param[in] eventDef - The event's full definition - */ - void handleEvent(sdbusplus::message::message& msg, - const Event& event, - const std::tuple>, - std::vector>& eventDef); - - /** - * @brief An event's set of arguments - */ - using eventArg = std::tuple>, - std::vector>*>; - - private: - /** @brief Connection for sdbusplus bus */ - sdbusplus::bus::bus& bus; - /** @brief List of events to process */ - static const std::vector< - std::tuple>, - std::vector>> events; - /** @brief List of event arguments */ - std::vector> eventArgs; - /** @brief list of Dbus matches for callbacks */ - std::vector matches; - - /** - * @brief Handle an event signal - * - * @param[in] msg - Data associated with the subscribed signal - * @param[in] data - Pointer to the event items's data - * @param[in] err - Contains any sdbus error reference if occurred - * - * @return 0 - */ - static int handleSignal(sd_bus_message* msg, - void* data, - sd_bus_error* err); - -}; - -} // namespace monitoring -} // namespace dbus -} // namespace phosphor -- cgit v1.2.1