118967161SSampa Misra #pragma once
218967161SSampa Misra 
318967161SSampa Misra #include "file_io_by_type.hpp"
418967161SSampa Misra 
518967161SSampa Misra namespace pldm
618967161SSampa Misra {
718967161SSampa Misra namespace responder
818967161SSampa Misra {
9e7cc8690SJayashankar Padath using DumpEntryInterface = std::string;
1018967161SSampa Misra 
1118967161SSampa Misra /** @class DumpHandler
1218967161SSampa Misra  *
1318967161SSampa Misra  *  @brief Inherits and implements FileHandler. This class is used
1418967161SSampa Misra  *  handle the dump offload/streaming from host to the destination via bmc
1518967161SSampa Misra  */
1618967161SSampa Misra class DumpHandler : public FileHandler
1718967161SSampa Misra {
1818967161SSampa Misra   public:
1918967161SSampa Misra     /** @brief DumpHandler constructor
2018967161SSampa Misra      */
DumpHandler(uint32_t fileHandle,uint16_t fileType)21db12436aSJayashankar Padath     DumpHandler(uint32_t fileHandle, uint16_t fileType) :
22db12436aSJayashankar Padath         FileHandler(fileHandle), dumpType(fileType)
236492f524SGeorge Liu     {}
2418967161SSampa Misra 
2518967161SSampa Misra     virtual int writeFromMemory(uint32_t offset, uint32_t length,
2669508503SSampa Misra                                 uint64_t address,
2769508503SSampa Misra                                 oem_platform::Handler* /*oemPlatformHandler*/);
2818967161SSampa Misra 
29*56c78807SKamalkumar Patel     virtual int readIntoMemory(uint32_t offset, uint32_t length,
30db12436aSJayashankar Padath                                uint64_t address,
31db12436aSJayashankar Padath                                oem_platform::Handler* /*oemPlatformHandler*/);
32db12436aSJayashankar Padath 
33db12436aSJayashankar Padath     virtual int read(uint32_t offset, uint32_t& length, Response& response,
34db12436aSJayashankar Padath                      oem_platform::Handler* /*oemPlatformHandler*/);
3518967161SSampa Misra 
3669508503SSampa Misra     virtual int write(const char* buffer, uint32_t offset, uint32_t& length,
3769508503SSampa Misra                       oem_platform::Handler* /*oemPlatformHandler*/);
3818967161SSampa Misra 
3918967161SSampa Misra     virtual int newFileAvailable(uint64_t length);
4018967161SSampa Misra 
41db12436aSJayashankar Padath     virtual int fileAck(uint8_t fileStatus);
42db12436aSJayashankar Padath 
43db12436aSJayashankar Padath     std::string findDumpObjPath(uint32_t fileHandle);
44db12436aSJayashankar Padath     std::string getOffloadUri(uint32_t fileHandle);
4518967161SSampa Misra 
4618967161SSampa Misra     /** @brief DumpHandler destructor
4718967161SSampa Misra      */
~DumpHandler()486da4f91bSPatrick Williams     ~DumpHandler() {}
4918967161SSampa Misra 
5018967161SSampa Misra   private:
5118967161SSampa Misra     static int fd;     //!< fd to manage the dump offload to bmc
52db12436aSJayashankar Padath     uint16_t dumpType; //!< type of the dump
5318967161SSampa Misra };
5418967161SSampa Misra 
5518967161SSampa Misra } // namespace responder
5618967161SSampa Misra } // namespace pldm
57