1 #pragma once 2 3 #include "associations.hpp" 4 #include "types.hpp" 5 6 #include <boost/container/flat_map.hpp> 7 8 #include <cassert> 9 #include <string> 10 11 /** @brief The associations definitions interface */ 12 constexpr const char* assocDefsInterface = 13 "xyz.openbmc_project.Association.Definitions"; 14 15 /** @brief The associations definitions property name */ 16 constexpr const char* assocDefsProperty = "Associations"; 17 18 /** @brief InterfacesAdded represents the dbus data from the signal 19 * 20 * There are 2 pairs 21 * pair1: D-bus Interface,vector[pair2] 22 * pair2: D-bus Method,vector[Associations] 23 */ 24 using InterfacesAdded = std::vector<std::pair< 25 std::string, std::vector<std::pair< 26 std::string, std::variant<std::vector<Association>>>>>>; 27 28 /** @brief Get well known name of input unique name 29 * 30 * If user passes in well known name then that will be returned. 31 * 32 * @param[in] owners - Current list of owners 33 * @param[in] request - The name to look up 34 * @param[out] wellKnown - The well known name if found 35 * 36 * @return True if well known name is found, false otherwise 37 */ 38 bool getWellKnown( 39 const boost::container::flat_map<std::string, std::string>& owners, 40 const std::string& request, std::string& wellKnown); 41 42 /** @brief Determine if dbus service is something to monitor 43 * 44 * mapper does not monitor all DBus services. needToIntrospect determines 45 * whether or not a service is to be monitored. 46 * 47 * @param[in] processName - Dbus service name 48 * 49 * @return True if input processName should be monitored, false otherwise 50 */ 51 bool needToIntrospect(const std::string& processName); 52 53 /** @brief Handle the removal of an existing name in objmgr data structures 54 * 55 * @param[in,out] nameOwners - Map of unique name to well known name 56 * @param[in] wellKnown - Well known name that has new owner 57 * @param[in] oldOwner - Old unique name 58 * @param[in,out] interfaceMap - Map of interfaces 59 * @param[in,out] assocMaps - The association maps 60 * @param[in,out] server - sdbus system object 61 * 62 */ 63 void processNameChangeDelete( 64 boost::container::flat_map<std::string, std::string>& nameOwners, 65 const std::string& wellKnown, const std::string& oldOwner, 66 InterfaceMapType& interfaceMap, AssociationMaps& assocMaps, 67 sdbusplus::asio::object_server& server); 68 69 /** @brief Handle an interfaces added signal 70 * 71 * @param[in,out] interfaceMap - Global map of interfaces 72 * @param[in] objPath - New path to process 73 * @param[in] interfacesAdded - New interfaces to process 74 * @param[in] wellKnown - Well known name that has new owner 75 * @param[in,out] assocMaps - The association maps 76 * @param[in,out] server - sdbus system object 77 * 78 */ 79 void processInterfaceAdded(InterfaceMapType& interfaceMap, 80 const sdbusplus::message::object_path& objPath, 81 const InterfacesAdded& intfAdded, 82 const std::string& wellKnown, 83 AssociationMaps& assocMaps, 84 sdbusplus::asio::object_server& server); 85