t7x/src/client/component/updater.cpp
2023-02-18 19:15:47 +01:00

67 lines
910 B
C++

#include <std_include.hpp>
#include "loader/component_loader.hpp"
#include "updater.hpp"
#include "game/game.hpp"
#include <utils/io.hpp>
#include <updater/updater.hpp>
namespace updater
{
void update()
{
try
{
run(game::get_appdata_path());
}
catch (update_cancelled&)
{
TerminateProcess(GetCurrentProcess(), 0);
}
catch (...)
{
}
}
class component final : public generic_component
{
public:
component()
{
this->update_thread_ = std::thread([this]
{
update();
});
}
void pre_destroy() override
{
join();
}
void post_unpack() override
{
join();
}
component_priority priority() const override
{
return component_priority::updater;
}
private:
std::thread update_thread_{};
void join()
{
if (this->update_thread_.joinable())
{
this->update_thread_.join();
}
}
};
}
REGISTER_COMPONENT(updater::component)