/
renath
/
organicmaps
Обзор
Документация
Войти
/
renath
/
organicmaps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
libs/base/cancellable.cpp
59 строк
1 KB
Alexander Borsuk
clang-format
24 июл 2025, 15:48
24 июл 2025, 15:48
15b66d5
Код
Авторство
О чём код?
#include "base/cancellable.hpp" #include "base/assert.hpp" namespace base { void Cancellable::Reset() { std::lock_guard lock(m_mutex); m_status = Status::Active; m_deadline = {}; } void Cancellable::Cancel() { std::lock_guard lock(m_mutex); m_status = Status::CancelCalled; } void Cancellable::SetDeadline(std::chrono::steady_clock::time_point const & deadline) { std::lock_guard lock(m_mutex); m_deadline = deadline; CheckDeadline(); } bool Cancellable::IsCancelled() const { return CancellationStatus() != Status::Active; } Cancellable::Status Cancellable::CancellationStatus() const { std::lock_guard lock(m_mutex); CheckDeadline(); return m_status; } void Cancellable::CheckDeadline() const { if (m_status == Status::Active && m_deadline && *m_deadline < std::chrono::steady_clock::now()) m_status = Status::DeadlineExceeded; } std::string DebugPrint(Cancellable::Status status) { switch (status) { case Cancellable::Status::Active: return "Active"; case Cancellable::Status::CancelCalled: return "CancelCalled"; case Cancellable::Status::DeadlineExceeded: return "DeadlineExceeded"; } UNREACHABLE(); } } // namespace base