#include <boost/optional/optional.hpp>
#include <manifest_parser/utils/logging.h>
#include <pkgmgr_installer.h>
+
+#include <map>
#include <memory>
#include <string>
#include "common/app_query_interface.h"
-#include "common/request.h"
#include "common/utils/macros.h"
+#include "common/utils/request.h"
namespace common_installer {
*/
class PkgmgrInstallerInterface {
public:
+ virtual ~PkgmgrInstallerInterface() = default;
+
virtual bool CreatePkgMgrInstaller(pkgmgr_installer** installer,
InstallationMode* mode) = 0;
virtual bool ShouldCreateSignal() const = 0;
class PkgMgrInterface {
public:
/**
+ * Set current AppQueryInterface for request
+ *
+ * \param idx index of request
+ *
+ * \return True if setting was success. Otherwise, return false
+ */
+ bool SetAppQueryInterface(int idx);
+
+ /**
+ * Add AppQueryInterface for request
+ *
+ * \param idx index of request
+ * \param interface AppQueryInterface for request
+ */
+ void AddAppQueryInterface(int idx,
+ std::shared_ptr<AppQueryInterface> interface);
+
+ /**
+ * Get AppQueryInterface for current request
+ *
+ * \return AppQueryInterface ptr if current AppQueryInterface exist.
+ * Otherwise, return null shared_ptr
+ */
+ std::shared_ptr<AppQueryInterface> GetAppQueryInterface();
+
+ /**
* Returns Request type passed from pkgmgr_installer
*
+ * \param idx index of request
+ *
* \return request type retrieved from pkgmgr_installer
*/
- RequestType GetRequestType() const;
+ RequestType GetRequestType(int idx = 0) const;
/**
* Returns uid passed from pkgmgr_installer
/**
* Returns Request info passed from pkgmgr_installer
*
+ * \param idx index of request
+ *
* \return request info retrieved from pkgmgr_installer
*/
- std::string GetRequestInfo() const;
+ std::string GetRequestInfo(int idx = 0) const;
/**
* Creates PkgMgrInterface
*/
static PkgMgrPtr Create(int argc, char** argv,
PkgmgrInstallerInterface* pkgmgr_installer_interface,
- AppQueryInterface* interface = nullptr);
+ std::shared_ptr<AppQueryInterface> interface = nullptr);
/**
* Returns TEP path passed from pkgmgr_installer
bool GetIsMoveToExternal() const;
/**
+ * Get MoveType for Move request
+ *
+ * \return value of MoveType
+ */
+ int GetMoveType() const;
+
+ /**
* Returns True if the request is for preload. Otherwise, return false
*
* \return True if the request is for preload. Otherwise, return false
bool GetIsPartialRW() const;
/**
+ * Returns True if the request is debug mode. Otherwise, return false;
+ *
+ * \return True if the request is debug mode. Otherwise, return false;
+ */
+ bool GetDebugMode() const;
+
+ /**
+ * Returns True if the request has skip-check-reference flag.
+ * Otherwise, return false;
+ *
+ * \return True if the request has skip-check-reference flag.
+ * Otherwise, return false;
+ */
+ bool GetIsSkipCheckReference() const;
+
+ /**
+ * Returns True if the request is skip optimization. Otherwise, return false;
+ *
+ * \return True if the request is skip optimization. Otherwise, return false;
+ */
+ bool GetSkipOptimization() const;
+
+ /**
+ * Returns the number of request info count.
+ *
+ * \return The number of request info count.
+ */
+ int GetRequestInfoCount() const;
+
+ /**
+ * Returns whether recovery mode is set to cleanup or not.
+ *
+ * \return True if recovery mode is set to cleanup. Otherwise, return false.
+ */
+ bool GetRecoveryCleanup() const;
+
+ /**
* Get Raw pointer to pkgmgr_installer object
* NOTE: It should not be used (PkgMgrInterface can destroy it
*
private:
explicit PkgMgrInterface(PkgmgrInstallerInterface* pkgmgr_installer_interface,
- AppQueryInterface* interface)
+ std::shared_ptr<AppQueryInterface> interface)
: pi_(nullptr),
install_mode_(InstallationMode::ONLINE),
is_app_installed_(boost::none),
mutable boost::optional<bool> is_app_installed_;
PkgmgrInstallerInterface* pkgmgr_installer_interface_;
- AppQueryInterface* query_interface_;
+ std::shared_ptr<AppQueryInterface> query_interface_;
+ std::map<int, std::shared_ptr<AppQueryInterface>> query_interface_map_;
SCOPE_LOG_TAG(PkgMgrInterface)
DISALLOW_COPY_AND_ASSIGN(PkgMgrInterface);