1 #pragma once
2 
3 #include <analyzer/resolution.hpp>
4 #include <hei_main.hpp>
5 #include <nlohmann/json.hpp>
6 
7 #include <map>
8 
9 namespace analyzer
10 {
11 
12 /**
13  * @brief Manages the RAS data files and resolves service actions required for
14  *        error signatures.
15  */
16 class RasDataParser
17 {
18   public:
19     /** @brief Default constructor. */
20     RasDataParser()
21     {
22         initDataFiles();
23     }
24 
25   private:
26     /** @brief The RAS data files. */
27     std::map<libhei::ChipType_t, nlohmann::json> iv_dataFiles;
28 
29   public:
30     /**
31      * @brief Returns a resolution for all the RAS actions needed for the given
32      *        signature.
33      * @param i_signature The target error signature.
34      */
35     std::shared_ptr<Resolution>
36         getResolution(const libhei::Signature& i_signature);
37 
38   private:
39     /**
40      * @brief Parses all of the RAS data JSON files and validates them against
41      *        the associated schema.
42      */
43     void initDataFiles();
44 };
45 
46 } // namespace analyzer
47