#pragma once #include "common/instance_id.hpp" #include "requester/handler.hpp" #include #include #include #include namespace pldm { namespace requester { namespace oem_ibm { using ResDumpStatus = std::string; /** @class DbusToFileHandler * @brief This class can process resource dump parameters and send PLDM * new file available cmd to the hypervisor. This class can be used * as a pldm requester in oem-ibm path. */ class DbusToFileHandler { public: DbusToFileHandler(const DbusToFileHandler&) = delete; DbusToFileHandler(DbusToFileHandler&&) = delete; DbusToFileHandler& operator=(const DbusToFileHandler&) = delete; DbusToFileHandler& operator=(DbusToFileHandler&&) = delete; ~DbusToFileHandler() = default; /** @brief Constructor * @param[in] mctp_fd - fd of MCTP communications socket * @param[in] mctp_eid - MCTP EID of host firmware * @param[in] instanceIdDb - pointer to a InstanceIdDb object * @param[in] resDumpCurrentObjPath - resource dump current object path * @param[in] handler - PLDM request handler */ DbusToFileHandler( int mctp_fd, uint8_t mctp_eid, pldm::InstanceIdDb* instanceIdDb, sdbusplus::message::object_path resDumpCurrentObjPath, pldm::requester::Handler* handler); /** @brief Process the new resource dump request * @param[in] vspString - vsp string * @param[in] resDumpReqPass - resource dump password */ void processNewResourceDump(const std::string& vspString, const std::string& resDumpReqPass); /** @brief Process the new CSR file available * @param[in] csr - CSR string * @param[in] fileHandle - file Handle for new file request */ void newCsrFileAvailable(const std::string& csr, const std::string fileHandle); private: /** @brief Send the new file available command request to hypervisor * @param[in] fileSize - size of the file */ void sendNewFileAvailableCmd(uint64_t fileSize); /** @brief Send the new file available command request to hypervisor * @param[in] fileSize - size of the file * @param[in] fileHandle - file handle * @param[in] type - file type */ void newFileAvailableSendToHost(const uint32_t fileSize, const uint32_t fileHandle, const uint16_t type); /** @brief report failure that a resource dump has failed */ void reportResourceDumpFailure(); /** @brief method to get the acf file contents */ std::string getAcfFileContent(); /** @brief fd of MCTP communications socket */ int mctp_fd; /** @brief MCTP EID of host firmware */ uint8_t mctp_eid; /** @brief Pointer to an InstanceIdDb used to obtain PLDM instance id. */ pldm::InstanceIdDb* instanceIdDb; /** @brief Hold the current resource dump object path */ sdbusplus::message::object_path resDumpCurrentObjPath; /** @brief PLDM request handler */ pldm::requester::Handler* handler; }; } // namespace oem_ibm } // namespace requester } // namespace pldm