| #pragma once |
| |
| #include "associations.hpp" |
| #include "types.hpp" |
| |
| #include <boost/container/flat_map.hpp> |
| |
| #include <cassert> |
| #include <string> |
| |
| /** @brief The associations definitions interface */ |
| constexpr const char* assocDefsInterface = |
| "xyz.openbmc_project.Association.Definitions"; |
| |
| /** @brief The associations definitions property name */ |
| constexpr const char* assocDefsProperty = "Associations"; |
| |
| /** @brief InterfacesAdded represents the dbus data from the signal |
| * |
| * There are 2 pairs |
| * pair1: D-bus Interface,vector[pair2] |
| * pair2: D-bus Method,vector[Associations] |
| */ |
| using InterfacesAdded = std::vector<std::pair< |
| std::string, std::vector<std::pair< |
| std::string, std::variant<std::vector<Association>>>>>>; |
| |
| /** @brief Get well known name of input unique name |
| * |
| * If user passes in well known name then that will be returned. |
| * |
| * @param[in] owners - Current list of owners |
| * @param[in] request - The name to look up |
| * @param[out] wellKnown - The well known name if found |
| * |
| * @return True if well known name is found, false otherwise |
| */ |
| bool getWellKnown( |
| const boost::container::flat_map<std::string, std::string>& owners, |
| const std::string& request, std::string& wellKnown); |
| |
| /** @brief Determine if dbus service is something to monitor |
| * |
| * mapper does not monitor all DBus services. needToIntrospect determines |
| * whether or not a service is to be monitored. |
| * |
| * @param[in] processName - Dbus service name |
| * |
| * @return True if input processName should be monitored, false otherwise |
| */ |
| bool needToIntrospect(const std::string& processName); |
| |
| /** @brief Handle the removal of an existing name in objmgr data structures |
| * |
| * @param[in] io - io context |
| * @param[in,out] nameOwners - Map of unique name to well known name |
| * @param[in] wellKnown - Well known name that has new owner |
| * @param[in] oldOwner - Old unique name |
| * @param[in,out] interfaceMap - Map of interfaces |
| * @param[in,out] assocMaps - The association maps |
| * @param[in,out] server - sdbus system object |
| * |
| */ |
| void processNameChangeDelete( |
| boost::asio::io_context& io, |
| boost::container::flat_map<std::string, std::string>& nameOwners, |
| const std::string& wellKnown, const std::string& oldOwner, |
| InterfaceMapType& interfaceMap, AssociationMaps& assocMaps, |
| sdbusplus::asio::object_server& server); |
| |
| /** @brief Handle an interfaces added signal |
| * |
| * @param[in] io - io context |
| * @param[in,out] interfaceMap - Global map of interfaces |
| * @param[in] objPath - New path to process |
| * @param[in] interfacesAdded - New interfaces to process |
| * @param[in] wellKnown - Well known name that has new owner |
| * @param[in,out] assocMaps - The association maps |
| * @param[in,out] server - sdbus system object |
| * |
| */ |
| void processInterfaceAdded( |
| boost::asio::io_context& io, InterfaceMapType& interfaceMap, |
| const sdbusplus::message::object_path& objPath, |
| const InterfacesAdded& intfAdded, const std::string& wellKnown, |
| AssociationMaps& assocMaps, sdbusplus::asio::object_server& server); |