| #pragma once |
| |
| #include <filesystem> |
| #include <fstream> |
| #include <set> |
| #include <string> |
| |
| namespace phosphor |
| { |
| namespace led |
| { |
| |
| namespace fs = std::filesystem; |
| |
| // the set of names of asserted groups, which contains the D-Bus Object path |
| using SavedGroups = std::set<std::string>; |
| |
| /** @class Serialize |
| * @brief Store and restore groups of LEDs |
| */ |
| class Serialize |
| { |
| public: |
| explicit Serialize(const fs::path& path) : path(path) |
| { |
| restoreGroups(); |
| } |
| |
| /** @brief Store asserted group names to SAVED_GROUPS_FILE |
| * |
| * @param [in] group - name of the group |
| * @param [in] asserted - asserted state, true or false |
| */ |
| void storeGroups(const std::string& group, bool asserted); |
| |
| /** @brief Is the group in asserted state stored in SAVED_GROUPS_FILE |
| * |
| * @param [in] objPath - The D-Bus path that hosts LED group |
| * |
| * @return - true: exist, false: does not exist |
| */ |
| bool getGroupSavedState(const std::string& objPath) const; |
| |
| private: |
| /** @brief restore asserted group names from SAVED_GROUPS_FILE |
| */ |
| void restoreGroups(); |
| |
| /** @brief the set of names of asserted groups */ |
| SavedGroups savedGroups; |
| |
| /** @brief the path of file for storing the names of asserted groups */ |
| fs::path path; |
| }; |
| |
| } // namespace led |
| } // namespace phosphor |