|  | #pragma once | 
|  | #include "version.hpp" | 
|  |  | 
|  | #include <sdbusplus/server.hpp> | 
|  |  | 
|  | #include <chrono> | 
|  | #include <random> | 
|  | #include <string> | 
|  |  | 
|  | namespace phosphor | 
|  | { | 
|  | namespace software | 
|  | { | 
|  | namespace manager | 
|  | { | 
|  |  | 
|  | /** @class Manager | 
|  | *  @brief Contains a map of Version dbus objects. | 
|  | *  @details The software image manager class that contains the Version dbus | 
|  | *           objects and their version ids. | 
|  | */ | 
|  | class Manager | 
|  | { | 
|  | public: | 
|  | /** @brief Constructs Manager Class | 
|  | * | 
|  | * @param[in] bus - The Dbus bus object | 
|  | */ | 
|  | explicit Manager(sdbusplus::bus_t& bus) : bus(bus) {}; | 
|  |  | 
|  | /** | 
|  | * @brief Verify and untar the tarball. Verify the manifest file. | 
|  | *        Create and populate the version and filepath interfaces. | 
|  | * | 
|  | * @param[in]  tarballFilePath - Tarball path. | 
|  | * @param[out] result          - 0 if successful. | 
|  | */ | 
|  | int processImage(const std::string& tarballFilePath); | 
|  |  | 
|  | /** | 
|  | * @brief Erase specified entry d-bus object | 
|  | *        and deletes the image file. | 
|  | * | 
|  | * @param[in] entryId - unique identifier of the entry | 
|  | */ | 
|  | void erase(const std::string& entryId); | 
|  |  | 
|  | private: | 
|  | /** @brief Persistent map of Version dbus objects and their | 
|  | * version id */ | 
|  | std::map<std::string, std::unique_ptr<Version>> versions; | 
|  |  | 
|  | /** @brief Persistent sdbusplus DBus bus connection. */ | 
|  | sdbusplus::bus_t& bus; | 
|  |  | 
|  | /** @brief The random generator to get the version salt */ | 
|  | std::mt19937 randomGen{static_cast<unsigned>( | 
|  | std::chrono::system_clock::now().time_since_epoch().count())}; | 
|  |  | 
|  | /** | 
|  | * @brief Untar the tarball. | 
|  | * | 
|  | * @param[in]  tarballFilePath - Tarball path. | 
|  | * @param[in]  extractDirPath  - Dir path to extract tarball ball to. | 
|  | * @param[out] result          - 0 if successful. | 
|  | */ | 
|  | static int unTar(const std::string& tarballFilePath, | 
|  | const std::string& extractDirPath); | 
|  | }; | 
|  |  | 
|  | } // namespace manager | 
|  | } // namespace software | 
|  | } // namespace phosphor |