Files
comaps/libs/storage/downloading_policy.cpp
Konstantin Pastbin bfffa1fff4 Format all C++ and Java code via clang-format
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
2025-08-17 14:32:37 +07:00

46 lines
1.3 KiB
C++

#include "storage/downloading_policy.hpp"
#include "platform/platform.hpp"
using namespace std::chrono;
void StorageDownloadingPolicy::EnableCellularDownload(bool enabled)
{
m_cellularDownloadEnabled = enabled;
m_disableCellularTime = steady_clock::now() + hours(1);
}
bool StorageDownloadingPolicy::IsCellularDownloadEnabled()
{
if (m_cellularDownloadEnabled && steady_clock::now() > m_disableCellularTime)
m_cellularDownloadEnabled = false;
return m_cellularDownloadEnabled;
}
bool StorageDownloadingPolicy::IsDownloadingAllowed()
{
return !(GetPlatform().ConnectionStatus() == Platform::EConnectionType::CONNECTION_WWAN &&
!IsCellularDownloadEnabled());
}
void StorageDownloadingPolicy::ScheduleRetry(storage::CountriesSet const & failedCountries, TProcessFunc const & func)
{
if (IsDownloadingAllowed() && !failedCountries.empty() && m_autoRetryCounter > 0)
{
m_downloadRetryFailed = false;
auto action = [this, func, failedCountries]
{
--m_autoRetryCounter;
func(failedCountries);
};
m_autoRetryWorker.RestartWith([action] { GetPlatform().RunTask(Platform::Thread::Gui, action); });
}
else
{
if (!failedCountries.empty())
m_downloadRetryFailed = true;
m_autoRetryCounter = kAutoRetryCounterMax;
}
}