dispatch_manager.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. //
  2. // Created by huli on 2020/7/20.
  3. //
  4. #include "dispatch_manager.h"
  5. #include <cstdlib>
  6. Dispatch_manager::Dispatch_manager()
  7. {
  8. m_dispatch_manager_status = E_DISPATCH_MANAGER_UNKNOW;
  9. // m_carrier_number = 0;
  10. }
  11. Dispatch_manager::~Dispatch_manager()
  12. {
  13. dispatch_manager_uninit();
  14. }
  15. //调度管理 初始化
  16. Error_manager Dispatch_manager::dispatch_manager_init()
  17. {
  18. m_dispatch_manager_status = E_DISPATCH_MANAGER_READY;
  19. // m_carrier_number = size;
  20. //
  21. // for (int i = 0; i < size; ++i)
  22. // {
  23. // Carrier_base * p_arrier_base = new Carrier_base;
  24. // p_arrier_base->carrier_base_init();
  25. // m_carrier_vector.push_back(p_arrier_base);
  26. // }
  27. return Error_code::SUCCESS;
  28. }
  29. //调度管理 反初始化
  30. Error_manager Dispatch_manager::dispatch_manager_uninit()
  31. {
  32. // //回收搬运器的内存
  33. // for (int i = 0; i < m_carrier_number; ++i)
  34. // {
  35. // m_carrier_vector[i]->carrier_base_uninit();
  36. // delete(m_carrier_vector[i]);
  37. // }
  38. m_dispatch_manager_status = E_DISPATCH_MANAGER_UNKNOW;
  39. // m_carrier_number = 0;
  40. // m_carrier_vector.clear();
  41. return Error_code::SUCCESS;
  42. }
  43. //对外的接口函数,负责接受并处理任务单,
  44. Error_manager Dispatch_manager::execute_task(Dispatch_manager::Dispatch_motion_direction dispatch_motion_direction)
  45. {
  46. std::this_thread::sleep_for(std::chrono::seconds(rand()%3+3));
  47. if ( dispatch_motion_direction == E_STORE_CAR )
  48. {
  49. return Error_code::SUCCESS;
  50. }
  51. return Error_code::SUCCESS;
  52. // srand(0);
  53. unsigned int t_probability = rand();
  54. if ( t_probability%100 >=40 )
  55. {
  56. return Error_code::SUCCESS;
  57. }
  58. else
  59. {
  60. return Error_manager(Error_code::ERROR, Error_level::MINOR_ERROR,
  61. " Dispatch_manager::execute_task() error ");
  62. }
  63. }
  64. //检查状态
  65. Error_manager Dispatch_manager::check_status()
  66. {
  67. if ( m_dispatch_manager_status == E_DISPATCH_MANAGER_READY )
  68. {
  69. return Error_code::SUCCESS;
  70. }
  71. else if ( m_dispatch_manager_status == E_DISPATCH_MANAGER_STORE || m_dispatch_manager_status == E_DISPATCH_MANAGER_STORE )
  72. {
  73. return Error_manager(Error_code::DISPATCH_MANAGER_STATUS_BUSY, Error_level::NEGLIGIBLE_ERROR,
  74. " Dispatch_manager::check_status() error ");
  75. }
  76. else
  77. {
  78. return Error_manager(Error_code::DISPATCH_MANAGER_STATUS_ERROR, Error_level::MINOR_ERROR,
  79. " Dispatch_manager::check_status() error ");
  80. }
  81. return Error_code::SUCCESS;
  82. }
  83. Dispatch_manager::Dispatch_manager_status Dispatch_manager::get_dispatch_manager_status()
  84. {
  85. return m_dispatch_manager_status;
  86. }