| #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 |