// // Created by huli on 2020/7/20. // #include "dispatch_manager.h" #include Dispatch_manager::Dispatch_manager() { m_dispatch_manager_status = E_DISPATCH_MANAGER_UNKNOW; // m_carrier_number = 0; } Dispatch_manager::~Dispatch_manager() { dispatch_manager_uninit(); } //调度管理 初始化 Error_manager Dispatch_manager::dispatch_manager_init() { m_dispatch_manager_status = E_DISPATCH_MANAGER_READY; // m_carrier_number = size; // // for (int i = 0; i < size; ++i) // { // Carrier_base * p_arrier_base = new Carrier_base; // p_arrier_base->carrier_base_init(); // m_carrier_vector.push_back(p_arrier_base); // } return Error_code::SUCCESS; } //调度管理 反初始化 Error_manager Dispatch_manager::dispatch_manager_uninit() { // //回收搬运器的内存 // for (int i = 0; i < m_carrier_number; ++i) // { // m_carrier_vector[i]->carrier_base_uninit(); // delete(m_carrier_vector[i]); // } m_dispatch_manager_status = E_DISPATCH_MANAGER_UNKNOW; // m_carrier_number = 0; // m_carrier_vector.clear(); return Error_code::SUCCESS; } //对外的接口函数,负责接受并处理任务单, Error_manager Dispatch_manager::execute_task(Dispatch_manager::Dispatch_motion_direction dispatch_motion_direction) { std::this_thread::sleep_for(std::chrono::seconds(rand()%3+3)); if ( dispatch_motion_direction == E_STORE_CAR ) { return Error_code::SUCCESS; } return Error_code::SUCCESS; // srand(0); unsigned int t_probability = rand(); if ( t_probability%100 >=40 ) { return Error_code::SUCCESS; } else { return Error_manager(Error_code::ERROR, Error_level::MINOR_ERROR, " Dispatch_manager::execute_task() error "); } } //检查状态 Error_manager Dispatch_manager::check_status() { if ( m_dispatch_manager_status == E_DISPATCH_MANAGER_READY ) { return Error_code::SUCCESS; } else if ( m_dispatch_manager_status == E_DISPATCH_MANAGER_STORE || m_dispatch_manager_status == E_DISPATCH_MANAGER_STORE ) { return Error_manager(Error_code::DISPATCH_MANAGER_STATUS_BUSY, Error_level::NEGLIGIBLE_ERROR, " Dispatch_manager::check_status() error "); } else { return Error_manager(Error_code::DISPATCH_MANAGER_STATUS_ERROR, Error_level::MINOR_ERROR, " Dispatch_manager::check_status() error "); } return Error_code::SUCCESS; } Dispatch_manager::Dispatch_manager_status Dispatch_manager::get_dispatch_manager_status() { return m_dispatch_manager_status; }