13b025e69SAndrew Geissler #pragma once
23b025e69SAndrew Geissler 
33b025e69SAndrew Geissler #include <boost/container/flat_map.hpp>
4*82815dacSAndrew Geissler #include <boost/container/flat_set.hpp>
53b025e69SAndrew Geissler #include <string>
63b025e69SAndrew Geissler 
7*82815dacSAndrew Geissler /** @brief Define white list and black list data structure */
8*82815dacSAndrew Geissler using WhiteBlackList = boost::container::flat_set<std::string>;
9*82815dacSAndrew Geissler 
103b025e69SAndrew Geissler /** @brief Get well known name of input unique name
113b025e69SAndrew Geissler  *
123b025e69SAndrew Geissler  * If user passes in well known name then that will be returned.
133b025e69SAndrew Geissler  *
143b025e69SAndrew Geissler  * @param[in] owners       - Current list of owners
153b025e69SAndrew Geissler  * @param[in] request      - The name to look up
163b025e69SAndrew Geissler  * @param[out] wellKnown   - The well known name if found
173b025e69SAndrew Geissler  *
183b025e69SAndrew Geissler  * @return True if well known name is found, false otherwise
193b025e69SAndrew Geissler  */
203b025e69SAndrew Geissler bool getWellKnown(
213b025e69SAndrew Geissler     const boost::container::flat_map<std::string, std::string>& owners,
22*82815dacSAndrew Geissler     const std::string& request, std::string& well_known);
23*82815dacSAndrew Geissler 
24*82815dacSAndrew Geissler /** @brief Determine if dbus service is something to monitor
25*82815dacSAndrew Geissler  *
26*82815dacSAndrew Geissler  * mapper supports a whitelist and blacklist concept. If a whitelist is provided
27*82815dacSAndrew Geissler  * as input then only dbus objects matching that list is monitored. If a
28*82815dacSAndrew Geissler  * blacklist is provided then objects matching it will not be monitored.
29*82815dacSAndrew Geissler  *
30*82815dacSAndrew Geissler  * @param[in] processName   - Dbus service name
31*82815dacSAndrew Geissler  * @param[in] whiteList     - The white list
32*82815dacSAndrew Geissler  * @param[in] blackList     - The black list
33*82815dacSAndrew Geissler  *
34*82815dacSAndrew Geissler  * @return True if input process_name should be monitored, false otherwise
35*82815dacSAndrew Geissler  */
36*82815dacSAndrew Geissler bool needToIntrospect(const std::string& processName,
37*82815dacSAndrew Geissler                       const WhiteBlackList& whiteList,
38*82815dacSAndrew Geissler                       const WhiteBlackList& blackList);
39