| #pragma once | 
 |  | 
 | #include <ipmid/types.hpp> | 
 | #include <nlohmann/json.hpp> | 
 |  | 
 | #include <memory> | 
 |  | 
 | namespace ipmi | 
 | { | 
 | namespace sensor | 
 | { | 
 |  | 
 | /** | 
 |  * @brief Grab a handle to the entity map. | 
 |  */ | 
 | const EntityInfoMap& getIpmiEntityRecords(); | 
 |  | 
 | /** | 
 |  * @brief Open the default entity map json file, and if present and valid json, | 
 |  * return a built entity map. | 
 |  * | 
 |  * @return the map | 
 |  */ | 
 | EntityInfoMap buildEntityMapFromFile(); | 
 |  | 
 | /** | 
 |  * @brief Given json data validate the data matches the expected format for the | 
 |  * entity map configuration and parse the data into a map of the entities. | 
 |  * | 
 |  * If any entry is invalid, the entire contents passed in is disregarded as | 
 |  * possibly corrupt. | 
 |  * | 
 |  * @param[in] data - the json data | 
 |  * @return the map | 
 |  */ | 
 | EntityInfoMap buildJsonEntityMap(const nlohmann::json& data); | 
 |  | 
 | /** | 
 |  * @brief Owner of the EntityInfoMap. | 
 |  */ | 
 | class EntityInfoMapContainer | 
 | { | 
 |   public: | 
 |     /** Get ahold of the owner. */ | 
 |     static EntityInfoMapContainer* getContainer(); | 
 |     /** Get ahold of the records. */ | 
 |     const EntityInfoMap& getIpmiEntityRecords(); | 
 |  | 
 |   private: | 
 |     EntityInfoMapContainer(const EntityInfoMap& entityRecords) : | 
 |         entityRecords(entityRecords) | 
 |     {} | 
 |     EntityInfoMap entityRecords; | 
 | }; | 
 |  | 
 | } // namespace sensor | 
 | } // namespace ipmi |