task_base.cpp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. //
  2. // Created by zx on 2019/12/28.
  3. //
  4. #include "task_base.h"
  5. #include "../error_code/error_code.h"
  6. Task_Base::Task_Base()
  7. {
  8. static unsigned int t_task_id = 0;
  9. m_task_id = t_task_id;
  10. t_task_id++;
  11. m_task_type = UNKNOW_TASK;
  12. m_task_statu = TASK_CREATED;
  13. mp_tast_receiver = NULL;
  14. m_task_start_time = std::chrono::system_clock::now(); //获取当前时间
  15. m_task_over_time = std::chrono::milliseconds(TASK_OVER_TIME_DEFAULT); //默认10秒
  16. }
  17. Task_Base::~Task_Base()
  18. {
  19. mp_tast_receiver = NULL;
  20. }
  21. //初始化任务单,必须初始化之后才可以使用,
  22. // input:task_statu 任务状态
  23. // input:task_statu_information 状态说明
  24. // input:tast_receiver 接受对象
  25. // input:task_over_time 超时时间
  26. Error_manager Task_Base::task_init(Task_statu task_statu,
  27. std::string task_statu_information,
  28. void* p_tast_receiver,
  29. std::chrono::milliseconds task_over_time)
  30. {
  31. m_task_statu = task_statu;
  32. m_task_statu_information = task_statu_information;
  33. mp_tast_receiver = p_tast_receiver;
  34. m_task_over_time = task_over_time;
  35. m_task_error_manager.error_manager_clear_all();
  36. return Error_code::SUCCESS;
  37. }
  38. //更新任务单
  39. //task_statu: 任务状态
  40. //statu_information:状态说明
  41. Error_manager Task_Base::update_statu(Task_statu task_statu,std::string statu_information)
  42. {
  43. m_task_statu=task_statu;
  44. m_task_statu_information=statu_information;
  45. return SUCCESS;
  46. }
  47. //判断是否超时。返回true表示任务超时,返回false表示任务没有超时
  48. bool Task_Base::is_over_time()
  49. {
  50. return (std::chrono::system_clock::now() - m_task_start_time) > m_task_over_time;
  51. }
  52. //判断是否结束, TASK_OVER TASK_ERROR TASK_DEAD 都算结束
  53. bool Task_Base::is_task_end()
  54. {
  55. if(m_task_statu == TASK_OVER || m_task_statu == TASK_ERROR || m_task_statu == TASK_DEAD)
  56. {
  57. return true;
  58. }
  59. else
  60. {
  61. return false;
  62. }
  63. }
  64. //获取 任务单id
  65. unsigned int Task_Base::get_task_id()
  66. {
  67. return m_task_id;
  68. }
  69. //获取任务类型
  70. Task_type Task_Base::get_task_type()
  71. {
  72. return m_task_type;
  73. }
  74. //获取任务单状态
  75. Task_statu Task_Base::get_task_statu()
  76. {
  77. return m_task_statu;
  78. }
  79. //设置 任务单状态
  80. void Task_Base::set_task_statu(Task_statu task_statu)
  81. {
  82. m_task_statu = task_statu;
  83. }
  84. //获取状态说明
  85. std::string Task_Base::get_task_statu_information()
  86. {
  87. return m_task_statu_information;
  88. }
  89. //设置 状态说明
  90. void Task_Base::set_task_statu_information(std::string task_statu_information)
  91. {
  92. m_task_statu_information = task_statu_information;
  93. }
  94. //获取 错误码,返回引用。
  95. Error_manager& Task_Base::get_task_error_manager()
  96. {
  97. return m_task_error_manager;
  98. }
  99. //设置 错误码
  100. void Task_Base::set_task_error_manager(Error_manager & error_manager)
  101. {
  102. m_task_error_manager = error_manager;
  103. }
  104. //比较覆盖错误码
  105. void Task_Base::compare_and_cover_task_error_manager(Error_manager & error_manager)
  106. {
  107. m_task_error_manager.compare_and_cover_error(error_manager);
  108. }
  109. //获取任务接收方
  110. void * Task_Base::get_tast_receiver()
  111. {
  112. return mp_tast_receiver;
  113. }
  114. //设置任务接收方
  115. void Task_Base::set_tast_receiver(void * p_tast_receiver)
  116. {
  117. mp_tast_receiver = p_tast_receiver;
  118. }
  119. //获取 任务创建的时间点
  120. std::chrono::system_clock::time_point Task_Base::get_task_start_time()
  121. {
  122. return m_task_start_time;
  123. }
  124. //设置 任务创建的时间点
  125. void Task_Base::set_task_start_time(std::chrono::system_clock::time_point task_start_time)
  126. {
  127. m_task_start_time = task_start_time;
  128. }
  129. //获取 任务超时的时限
  130. std::chrono::milliseconds Task_Base::get_task_over_time()
  131. {
  132. return m_task_over_time;
  133. }
  134. //设置 任务超时的时限
  135. void Task_Base::set_task_over_time(std::chrono::milliseconds task_over_time)
  136. {
  137. m_task_over_time = task_over_time;
  138. }