1*693eaed0SAndrew Geissler #pragma once 2*693eaed0SAndrew Geissler 3*693eaed0SAndrew Geissler #include <map> 4*693eaed0SAndrew Geissler #include <string> 5*693eaed0SAndrew Geissler #include <vector> 6*693eaed0SAndrew Geissler 7*693eaed0SAndrew Geissler #include <nlohmann/json.hpp> 8*693eaed0SAndrew Geissler 9*693eaed0SAndrew Geissler /** @brief Stores the error to log if errors to monitor is found */ 10*693eaed0SAndrew Geissler struct targetEntry 11*693eaed0SAndrew Geissler { 12*693eaed0SAndrew Geissler std::string errorToLog; 13*693eaed0SAndrew Geissler std::vector<std::string> errorsToMonitor; 14*693eaed0SAndrew Geissler }; 15*693eaed0SAndrew Geissler 16*693eaed0SAndrew Geissler /** @brief A map of the systemd target to its corresponding targetEntry*/ 17*693eaed0SAndrew Geissler using TargetErrorData = std::map<std::string, targetEntry>; 18*693eaed0SAndrew Geissler 19*693eaed0SAndrew Geissler using json = nlohmann::json; 20*693eaed0SAndrew Geissler 21*693eaed0SAndrew Geissler extern bool gVerbose; 22*693eaed0SAndrew Geissler 23*693eaed0SAndrew Geissler /** @brief Parse input json files 24*693eaed0SAndrew Geissler * 25*693eaed0SAndrew Geissler * Will return the parsed data in the TargetErrorData object 26*693eaed0SAndrew Geissler * 27*693eaed0SAndrew Geissler * @note This function will throw exceptions for an invalid json file 28*693eaed0SAndrew Geissler * @note See phosphor-target-monitor-default.json for example of json file 29*693eaed0SAndrew Geissler * format 30*693eaed0SAndrew Geissler * 31*693eaed0SAndrew Geissler * @param[in] filePaths - The file(s) to parse 32*693eaed0SAndrew Geissler * 33*693eaed0SAndrew Geissler * @return Map of target to error log relationships 34*693eaed0SAndrew Geissler */ 35*693eaed0SAndrew Geissler TargetErrorData parseFiles(const std::vector<std::string>& filePaths); 36