11 #include "threads/Event.h" 12 #include "utils/Job.h" 30 using RepositoryPtr = std::shared_ptr<CRepository>;
33 using AddonPtr = std::shared_ptr<IAddon>;
34 using VECADDONS = std::vector<AddonPtr>;
36 enum class BackgroundJob : bool
42 enum class ModalJob : bool
48 enum class AutoUpdateJob : bool
54 enum class DependencyJob : bool
60 enum class InstallModalPrompt : bool
66 enum class AllowCheckForUpdates : bool
72 enum class RecurseOrphaned : bool
83 bool IsDownloading()
const;
84 void GetInstallList(ADDON::VECADDONS &addons)
const;
85 bool GetProgress(
const std::string& addonID,
unsigned int& percent,
bool& downloadFinshed)
const;
86 bool Cancel(
const std::string &addonID);
95 bool InstallModal(
const std::string& addonID,
96 ADDON::AddonPtr& addon,
97 InstallModalPrompt promptForInstall);
106 bool InstallOrUpdate(
const std::string& addonID, BackgroundJob background, ModalJob modal);
114 bool InstallOrUpdateDependency(
const ADDON::AddonPtr& dependsId,
115 const ADDON::RepositoryPtr& repo);
121 bool RemoveDependency(
const std::shared_ptr<IAddon>& dependsId)
const;
128 std::vector<std::string> RemoveOrphanedDepsRecursively()
const;
137 void InstallAddons(
const ADDON::VECADDONS& addons,
139 AllowCheckForUpdates allowCheckForUpdates);
146 bool InstallFromZip(
const std::string &path);
149 bool Install(
const std::string& addonId,
151 const std::string& repoId);
154 bool UnInstall(
const ADDON::AddonPtr& addon,
bool removeData);
163 bool CheckDependencies(
const ADDON::AddonPtr& addon,
CAddonDatabase* database =
nullptr);
173 bool CheckDependencies(
const ADDON::AddonPtr& addon,
174 std::pair<std::string, std::string>& failedDep,
181 bool HasJob(
const std::string& ID)
const;
183 void OnJobComplete(
unsigned int jobID,
bool success,
CJob* job)
override;
184 void OnJobProgress(
unsigned int jobID,
unsigned int progress,
unsigned int total,
const CJob *job)
override;
192 unsigned int progress = 0;
193 bool downloadFinshed =
false;
196 typedef std::map<std::string, CDownloadJob> JobMap;
217 bool DoInstall(
const ADDON::AddonPtr& addon,
218 const ADDON::RepositoryPtr& repo,
219 BackgroundJob background,
221 AutoUpdateJob autoUpdate,
222 DependencyJob dependsInstall,
223 AllowCheckForUpdates allowCheckForUpdates);
234 bool CheckDependencies(
const ADDON::AddonPtr &addon, std::vector<std::string>& preDeps,
CAddonDatabase &database, std::pair<std::string, std::string> &failedDep);
236 void PrunePackageCache();
237 int64_t EnumeratePackageFolder(std::map<std::string, std::unique_ptr<CFileItemList>>& result);
239 mutable CCriticalSection m_critSection;
240 JobMap m_downloadJobs;
This is an Event class built from a ConditionVariable.
Definition: Event.h:35
Definition: AddonDatabase.h:61
Definition: AddonInstaller.h:78
Definition: AddonVersion.h:27
Base class for jobs that are executed asynchronously.
Definition: Job.h:109
Represents a list of files.
Definition: FileItem.h:713
Definition: AddonInstaller.h:186
Callback interface for asynchronous jobs.
Definition: Job.h:31