module_area.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #ifndef MODULE_AREA_H
  2. #define MODULE_AREA_H
  3. /**
  4. * @brief 与区域相关的业务模块总接口
  5. * @author 戴月腾
  6. * @date 2018-08-25
  7. */
  8. #include"area.h"
  9. #include"module_const.h"
  10. #include"module_web.h"
  11. class module_area:public i_thread, public singleton_base<module_area>
  12. {
  13. private:
  14. friend class singleton_base<module_area>;
  15. module_area()
  16. {
  17. }
  18. public:
  19. void on_hover(uint64_t card_id,std::shared_ptr<area_hover>&c,double speed);
  20. void on_enter(uint64_t card_id,std::shared_ptr<area_hover>&c,double speed);
  21. void on_leave(uint64_t card_id,std::shared_ptr<area_hover>&c,double speed);
  22. /**
  23. * @brief 读取数据库中的告警,初始化告警列表
  24. */
  25. void init()
  26. {}
  27. /**
  28. * @brief web前端有用户登录时,反馈给web所有信息
  29. */
  30. std::string response_login()
  31. {
  32. std::vector<std::shared_ptr<ya_event>> arr;
  33. get_all_events(arr);
  34. if(!arr.empty())//发送给web端
  35. {
  36. return tool_json::evs_to_json(arr);
  37. }
  38. return "";
  39. }
  40. private:
  41. /**
  42. * @brief 线程函数
  43. */
  44. void run()
  45. {
  46. std::vector<std::shared_ptr<ya_event>> arr;
  47. get_all_events(arr);
  48. if(!arr.empty())//发送给web端
  49. {
  50. swsClientMgr.send(JSON_CMD_VALUE_PUSH, tool_json::evs_to_json(arr));
  51. }
  52. }
  53. /**
  54. * @brief 获取所有的告警事件
  55. * @param out_data
  56. */
  57. void get_all_events(std::vector<std::shared_ptr<ya_event>>& arr)
  58. {
  59. {
  60. std::lock_guard<std::mutex> lock(_mutex);
  61. auto it_map = _map.begin();
  62. for(;it_map!=_map.end();++it_map)
  63. {
  64. arr.push_back(it_map->second);
  65. if(ES_DEAL_HELP== it_map->second->m_status)//删除掉已经处理的
  66. {
  67. _map.erase(it_map--);
  68. }
  69. }
  70. }
  71. }
  72. std::map<uint64_t, std::shared_ptr<ya_event>> _map;
  73. };
  74. #endif // MODULE_AREA_H