47 UpdateState(
const std::optional<Version>& pVersion, std::string&& pInstallPath);
67 static std::expected<Version, std::string>
GetCurrentVersion(HMODULE dll)
noexcept;
69 std::unique_ptr<UpdateState>
CheckForUpdate(HMODULE pDll,
const Version& pCurrentVersion, std::string&& pRepo,
bool pAllowPreRelease)
noexcept;
70 std::unique_ptr<UpdateState>
GetInstallState(std::string&& pInstallPath, std::string&& pRepo,
bool pAllowPreRelease)
noexcept;
74 std::unique_ptr<UpdateState>
GetUpdateInternal(std::string&& pInstallPath,
const std::optional<Version>& pCurrentVersion, std::string&& pRepo,
bool pAllowPreRelease)
noexcept;
77 virtual void Log(std::string&& pMessage);
79 bool PerformDownload(
const std::string& pUrl,
const std::string& pDestinationPath);
82 std::optional<std::tuple<Version, std::string>>
GetLatestRelease(std::string&& pRepo,
bool pAllowPreRelease);
83 virtual bool HttpDownload(
const std::string& pUrl,
const std::filesystem::path& pOutputFile) = 0;
84 virtual std::optional<std::string>
HttpGet(
const std::string& pUrl) = 0;
Definition UpdateCheckerBase.h:29
virtual Version ParseVersion(std::string_view versionString)
Definition UpdateCheckerBase.cpp:235
static std::string GetVersionAsString(const Version &pVersion)
Definition UpdateCheckerBase.cpp:222
std::unique_ptr< UpdateState > GetInstallState(std::string &&pInstallPath, std::string &&pRepo, bool pAllowPreRelease) noexcept
Definition UpdateCheckerBase.cpp:108
void PerformInstallOrUpdate(UpdateState &pState) noexcept
Definition UpdateCheckerBase.cpp:115
Status
Definition UpdateCheckerBase.h:37
virtual void Log(std::string &&pMessage)
Definition UpdateCheckerBase.cpp:231
static std::expected< Version, std::string > GetCurrentVersion(HMODULE dll) noexcept
Definition UpdateCheckerBase.cpp:44
bool PerformDownload(const std::string &pUrl, const std::string &pDestinationPath)
Definition UpdateCheckerBase.cpp:284
virtual std::optional< std::string > GetPathFromHModule(HMODULE pDll) noexcept
Definition UpdateCheckerBase.cpp:168
void ClearFiles(HMODULE pDll) noexcept
Definition UpdateCheckerBase.cpp:73
std::optional< std::tuple< Version, std::string > > GetLatestRelease(std::string &&pRepo, bool pAllowPreRelease)
Definition UpdateCheckerBase.cpp:292
std::unique_ptr< UpdateState > GetUpdateInternal(std::string &&pInstallPath, const std::optional< Version > &pCurrentVersion, std::string &&pRepo, bool pAllowPreRelease) noexcept
Definition UpdateCheckerBase.cpp:178
std::array< WORD, 4 > Version
Definition UpdateCheckerBase.h:31
virtual std::optional< std::string > HttpGet(const std::string &pUrl)=0
virtual bool IsNewer(const Version &pRepoVersion, const Version &pCurrentVersion)
Definition UpdateCheckerBase.cpp:226
virtual bool HttpDownload(const std::string &pUrl, const std::filesystem::path &pOutputFile)=0
std::unique_ptr< UpdateState > CheckForUpdate(HMODULE pDll, const Version &pCurrentVersion, std::string &&pRepo, bool pAllowPreRelease) noexcept
Definition UpdateCheckerBase.cpp:96
Definition ArcdpsExtension.h:10
Definition UpdateCheckerBase.h:46
const std::optional< Version > CurrentVersion
Definition UpdateCheckerBase.h:55
bool ChangeStatus(Status pExpectedStatus, Status pNewStatus)
Definition UpdateCheckerBase.cpp:34
~UpdateState()
Definition UpdateCheckerBase.cpp:15
std::mutex Lock
Definition UpdateCheckerBase.h:58
std::string DownloadUrl
Definition UpdateCheckerBase.h:64
Version NewVersion
Definition UpdateCheckerBase.h:63
Status UpdateStatus
Definition UpdateCheckerBase.h:59
void FinishPendingTasks()
Definition UpdateCheckerBase.cpp:22
std::vector< std::thread > Tasks
Definition UpdateCheckerBase.h:60
const std::string InstallPath
Definition UpdateCheckerBase.h:56