1 #pragma once
2 
3 #include "file_io_by_type.hpp"
4 
5 namespace pldm
6 {
7 namespace responder
8 {
9 
10 /** @class PelHandler
11  *
12  *  @brief Inherits and implements FileHandler. This class is used
13  *  to read/write pels.
14  */
15 class PelHandler : public FileHandler
16 {
17   public:
18     /** @brief PelHandler constructor
19      */
20     PelHandler(uint32_t fileHandle) : FileHandler(fileHandle)
21     {}
22 
23     virtual int writeFromMemory(uint32_t offset, uint32_t length,
24                                 uint64_t address,
25                                 oem_platform::Handler* /*oemPlatformHandler*/);
26 
27     virtual int readIntoMemory(uint32_t offset, uint32_t& length,
28                                uint64_t address,
29                                oem_platform::Handler* /*oemPlatformHandler*/);
30 
31     virtual int read(uint32_t offset, uint32_t& length, Response& response,
32                      oem_platform::Handler* /*oemPlatformHandler*/);
33 
34     virtual int write(const char* /*buffer*/, uint32_t /*offset*/,
35                       uint32_t& /*length*/,
36                       oem_platform::Handler* /*oemPlatformHandler*/);
37 
38     virtual int fileAck(uint8_t fileStatus);
39 
40     /** @brief method to store a pel file in tempfs and send
41      *  d-bus notification to pel daemon that it is ready for consumption
42      *
43      *  @param[in] pelFileName - the pel file path
44      */
45     virtual int storePel(std::string&& pelFileName);
46 
47     virtual int newFileAvailable(uint64_t /*length*/)
48     {
49         return PLDM_ERROR_UNSUPPORTED_PLDM_CMD;
50     }
51 
52     /** @brief PelHandler destructor
53      */
54     ~PelHandler()
55     {}
56 };
57 
58 } // namespace responder
59 } // namespace pldm
60