/
Maksim_Sadovnikov
/
Executor
Обзор
Документация
Войти
/
Maksim_Sadovnikov
/
Executor
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
executor/src/task.cpp
87 строк
1 KB
Maksim_Sadovnikov
Update code
16 май 2025, 23:29
16 май 2025, 23:29
b6e5a92
Код
Авторство
О чём код?
#include <executor/task.h> #include <sstream> #include <iomanip> #include <random> namespace executor { namespace { std::string GenerateStringId(); } // namespace Task::Task( Func f ) : id_(GenerateStringId()) , status_(StatusTask::IDLE) , function_(std::move(f)) {} Task::Task( std::string id, Func f ) : id_(id) , status_(StatusTask::IDLE) , function_(std::move(f)) {} std::string Task::GetId() { return id_; } StatusTask Task::GetStatus() { std::lock_guard<std::mutex> lock(statusMutex_); return status_; } void Task::SetStatus( StatusTask status ) { std::lock_guard<std::mutex> lock(statusMutex_); status_ = status; } void Task::Run() { status_ = StatusTask::RUNNING; try { function_(); } catch(...) { status_ = StatusTask::ERROR; return; } status_ = StatusTask::COMPLETED; } Task::~Task() {} namespace { std::string GenerateStringId() { static std::mutex idMutex; std::lock_guard<std::mutex> lock(idMutex); std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution<> dist(0, 15); std::stringstream ss; for (int i = 0; i < 32; ++i) { ss << std::hex << dist(gen); } return ss.str(); } } // namespace } // namespace executor