1*18967161SSampa Misra #pragma once
2*18967161SSampa Misra 
3*18967161SSampa Misra #include "file_io_by_type.hpp"
4*18967161SSampa Misra 
5*18967161SSampa Misra namespace pldm
6*18967161SSampa Misra {
7*18967161SSampa Misra namespace responder
8*18967161SSampa Misra {
9*18967161SSampa Misra 
10*18967161SSampa Misra /** @class DumpHandler
11*18967161SSampa Misra  *
12*18967161SSampa Misra  *  @brief Inherits and implements FileHandler. This class is used
13*18967161SSampa Misra  *  handle the dump offload/streaming from host to the destination via bmc
14*18967161SSampa Misra  */
15*18967161SSampa Misra class DumpHandler : public FileHandler
16*18967161SSampa Misra {
17*18967161SSampa Misra   public:
18*18967161SSampa Misra     /** @brief DumpHandler constructor
19*18967161SSampa Misra      */
20*18967161SSampa Misra     DumpHandler(uint32_t fileHandle) : FileHandler(fileHandle)
21*18967161SSampa Misra     {
22*18967161SSampa Misra     }
23*18967161SSampa Misra 
24*18967161SSampa Misra     virtual int writeFromMemory(uint32_t offset, uint32_t length,
25*18967161SSampa Misra                                 uint64_t address);
26*18967161SSampa Misra 
27*18967161SSampa Misra     virtual int readIntoMemory(uint32_t /*offset*/, uint32_t& /*length*/,
28*18967161SSampa Misra                                uint64_t /*address*/)
29*18967161SSampa Misra     {
30*18967161SSampa Misra         return PLDM_ERROR_UNSUPPORTED_PLDM_CMD;
31*18967161SSampa Misra     }
32*18967161SSampa Misra     virtual int read(uint32_t /*offset*/, uint32_t& /*length*/,
33*18967161SSampa Misra                      Response& /*response*/)
34*18967161SSampa Misra     {
35*18967161SSampa Misra         return PLDM_ERROR_UNSUPPORTED_PLDM_CMD;
36*18967161SSampa Misra     }
37*18967161SSampa Misra 
38*18967161SSampa Misra     virtual int write(const char* buffer, uint32_t offset, uint32_t& length);
39*18967161SSampa Misra 
40*18967161SSampa Misra     virtual int newFileAvailable(uint64_t length);
41*18967161SSampa Misra 
42*18967161SSampa Misra     virtual int fileAck(uint8_t /*fileStatus*/)
43*18967161SSampa Misra     {
44*18967161SSampa Misra         return PLDM_ERROR_UNSUPPORTED_PLDM_CMD;
45*18967161SSampa Misra     }
46*18967161SSampa Misra 
47*18967161SSampa Misra     /** @brief DumpHandler destructor
48*18967161SSampa Misra      */
49*18967161SSampa Misra     ~DumpHandler()
50*18967161SSampa Misra     {
51*18967161SSampa Misra     }
52*18967161SSampa Misra 
53*18967161SSampa Misra   private:
54*18967161SSampa Misra     static int fd; //!< fd to manage the dump offload to bmc
55*18967161SSampa Misra };
56*18967161SSampa Misra 
57*18967161SSampa Misra } // namespace responder
58*18967161SSampa Misra } // namespace pldm
59