text: #pragma once
  
  #include "file_io_by_type.hpp"
  
  namespace pldm
  {
  namespace responder
  {
  
  using namespace pldm::responder::dma;
  
  /** @class PelHandler
   *
   *  @brief Inherits and implements FileHandler. This class is used
   *  to read/write pels.
   */
  class PelHandler : public FileHandler
  {
    public:
      /** @brief PelHandler constructor
       */
      PelHandler(uint32_t fileHandle) : FileHandler(fileHandle)
      {}
  
      virtual int writeFromMemory(uint32_t offset, uint32_t length,
                                  uint64_t address,
                                  oem_platform::Handler* /*oemPlatformHandler*/);
  
      virtual int readIntoMemory(uint32_t offset, uint32_t& length,
                                 uint64_t address,
                                 oem_platform::Handler* /*oemPlatformHandler*/);
  
      virtual int read(uint32_t offset, uint32_t& length, Response& response,
                       oem_platform::Handler* /*oemPlatformHandler*/);
  
      virtual int write(const char* /*buffer*/, uint32_t /*offset*/,
                        uint32_t& /*length*/,
                        oem_platform::Handler* /*oemPlatformHandler*/);
  
      virtual int fileAck(uint8_t fileStatus);
  
      /** @brief method to store a pel file in tempfs and send
       *  d-bus notification to pel daemon that it is ready for consumption
       *
       *  @param[in] pelFileName - the pel file path
       */
      virtual int storePel(std::string&& pelFileName);
  
      virtual int newFileAvailable(uint64_t /*length*/)
      {
          return PLDM_ERROR_UNSUPPORTED_PLDM_CMD;
      }
  
      /** @brief PelHandler destructor
       */
      ~PelHandler()
      {}
  };
  
  } // namespace responder
  } // namespace pldm
  