1 #pragma once
2 
3 #include <filesystem>
4 #include <fstream>
5 #include <set>
6 #include <string>
7 
8 namespace phosphor
9 {
10 namespace led
11 {
12 
13 namespace fs = std::filesystem;
14 
15 // the set of names of asserted groups, which contains the D-Bus Object path
16 using SavedGroups = std::set<std::string>;
17 
18 /** @class Serialize
19  *  @brief Store and restore groups of LEDs
20  */
21 class Serialize
22 {
23   public:
24     explicit Serialize(const fs::path& path) : path(path)
25     {
26         restoreGroups();
27     }
28 
29     /** @brief Store asserted group names to SAVED_GROUPS_FILE
30      *
31      *  @param [in] group     - name of the group
32      *  @param [in] asserted  - asserted state, true or false
33      */
34     void storeGroups(const std::string& group, bool asserted);
35 
36     /** @brief Is the group in asserted state stored in SAVED_GROUPS_FILE
37      *
38      *  @param [in] objPath - The D-Bus path that hosts LED group
39      *
40      *  @return             - true: exist, false: does not exist
41      */
42     bool getGroupSavedState(const std::string& objPath) const;
43 
44   private:
45     /** @brief restore asserted group names from SAVED_GROUPS_FILE
46      */
47     void restoreGroups();
48 
49     /** @brief the set of names of asserted groups */
50     SavedGroups savedGroups;
51 
52     /** @brief the path of file for storing the names of asserted groups */
53     fs::path path;
54 };
55 
56 } // namespace led
57 } // namespace phosphor
58