dispatch_manager.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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(int dispatch_id)
  17. {
  18. m_dispatch_manager_status = E_DISPATCH_MANAGER_READY;
  19. m_dispatch_id = dispatch_id;
  20. // m_carrier_number = size;
  21. //
  22. // for (int i = 0; i < size; ++i)
  23. // {
  24. // Carrier_base * p_arrier_base = new Carrier_base;
  25. // p_arrier_base->carrier_base_init();
  26. // m_carrier_vector.push_back(p_arrier_base);
  27. // }
  28. return Error_code::SUCCESS;
  29. }
  30. //调度管理 反初始化
  31. Error_manager Dispatch_manager::dispatch_manager_uninit()
  32. {
  33. // //回收搬运器的内存
  34. // for (int i = 0; i < m_carrier_number; ++i)
  35. // {
  36. // m_carrier_vector[i]->carrier_base_uninit();
  37. // delete(m_carrier_vector[i]);
  38. // }
  39. m_dispatch_manager_status = E_DISPATCH_MANAGER_UNKNOW;
  40. // m_carrier_number = 0;
  41. // m_carrier_vector.clear();
  42. return Error_code::SUCCESS;
  43. }
  44. //对外的接口函数,负责接受并处理任务单,
  45. Error_manager Dispatch_manager::execute_task(Dispatch_manager::Dispatch_motion_direction dispatch_motion_direction)
  46. {
  47. return Error_code::SUCCESS;
  48. // std::this_thread::sleep_for(std::chrono::seconds(rand()%3+3));
  49. if ( dispatch_motion_direction == E_PICKUP_CAR )
  50. {
  51. return Error_code::SUCCESS;
  52. }
  53. // return Error_code::SUCCESS;
  54. // srand(0);
  55. unsigned int t_probability = rand();
  56. if ( t_probability%100 >=20 )
  57. {
  58. return Error_code::SUCCESS;
  59. }
  60. else
  61. {
  62. return Error_manager(Error_code::ERROR, Error_level::MINOR_ERROR,
  63. " Dispatch_manager::execute_task() error ");
  64. }
  65. }
  66. //检查状态
  67. Error_manager Dispatch_manager::check_status()
  68. {
  69. if ( m_dispatch_manager_status == E_DISPATCH_MANAGER_READY )
  70. {
  71. return Error_code::SUCCESS;
  72. }
  73. else if ( m_dispatch_manager_status == E_DISPATCH_MANAGER_STORE || m_dispatch_manager_status == E_DISPATCH_MANAGER_STORE )
  74. {
  75. return Error_manager(Error_code::DISPATCH_MANAGER_STATUS_BUSY, Error_level::NEGLIGIBLE_ERROR,
  76. " Dispatch_manager::check_status() error ");
  77. }
  78. else
  79. {
  80. return Error_manager(Error_code::DISPATCH_MANAGER_STATUS_ERROR, Error_level::MINOR_ERROR,
  81. " Dispatch_manager::check_status() error ");
  82. }
  83. return Error_code::SUCCESS;
  84. }
  85. Dispatch_manager::Dispatch_manager_status Dispatch_manager::get_dispatch_manager_status()
  86. {
  87. return m_dispatch_manager_status;
  88. }
  89. int Dispatch_manager::get_dispatch_id()
  90. {
  91. return m_dispatch_id;
  92. }
  93. void Dispatch_manager::set_dispatch_id(int dispatch_id)
  94. {
  95. m_dispatch_id = dispatch_id;
  96. }