| #pragma once |
| |
| #include "types.hpp" |
| |
| #include <variant> |
| |
| namespace vpd |
| { |
| /** |
| * @brief Interface class for parsers. |
| * |
| * Any concrete parser class, implementing parsing logic need to derive from |
| * this interface class and override the parse method declared in this class. |
| */ |
| class ParserInterface |
| { |
| public: |
| /** |
| * @brief Pure virtual function for parsing VPD file. |
| * |
| * The API needs to be overridden by all the classes deriving from parser |
| * inerface class to implement respective VPD parsing logic. |
| * |
| * @return parsed format for VPD data, depending upon the |
| * parsing logic. |
| */ |
| virtual types::VPDMapVariant parse() = 0; |
| |
| /** |
| * @brief Read keyword's value from hardware |
| * |
| * @param[in] types::ReadVpdParams - Parameters required to perform read. |
| * |
| * @return keyword's value on successful read. Exception on failure. |
| */ |
| virtual types::DbusVariantType readKeywordFromHardware( |
| const types::ReadVpdParams) |
| { |
| return types::DbusVariantType(); |
| } |
| |
| /** |
| * @brief API to write keyword's value on hardware. |
| * |
| * This virtual method is created to achieve runtime polymorphism for |
| * hardware writes on VPD of different types. This virtual method can be |
| * redefined at derived classess to implement write according to the type of |
| * VPD. |
| * |
| * @param[in] i_paramsToWriteData - Data required to perform write. |
| * |
| * @throw May throw exception depending on the implementation of derived |
| * methods. |
| * @return On success returns number of bytes written on hardware, On |
| * failure returns -1. |
| */ |
| virtual int writeKeywordOnHardware( |
| const types::WriteVpdParams i_paramsToWriteData) |
| { |
| (void)i_paramsToWriteData; |
| return -1; |
| } |
| |
| /** |
| * @brief Virtual destructor. |
| */ |
| virtual ~ParserInterface() {} |
| }; |
| } // namespace vpd |