123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #ifndef MODULE_AREA_H
- #define MODULE_AREA_H
- /**
- * @brief 与区域相关的业务模块总接口
- * @author 戴月腾
- * @date 2018-08-25
- */
- #include"area.h"
- #include"module_const.h"
- #include"module_web.h"
- class module_area:public i_thread, public singleton_base<module_area>
- {
- private:
- friend class singleton_base<module_area>;
- module_area()
- {
- }
- public:
- void on_hover(uint64_t card_id,std::shared_ptr<area_hover>&c,double speed);
- void on_enter(uint64_t card_id,std::shared_ptr<area_hover>&c,double speed);
- void on_leave(uint64_t card_id,std::shared_ptr<area_hover>&c,double speed);
- /**
- * @brief 读取数据库中的告警,初始化告警列表
- */
- void init()
- {}
- /**
- * @brief web前端有用户登录时,反馈给web所有信息
- */
- std::string response_login()
- {
- std::vector<std::shared_ptr<ya_event>> arr;
- get_all_events(arr);
- if(!arr.empty())//发送给web端
- {
- return tool_json::evs_to_json(arr);
- }
- return "";
- }
- private:
- /**
- * @brief 线程函数
- */
- void run()
- {
- std::vector<std::shared_ptr<ya_event>> arr;
- get_all_events(arr);
- if(!arr.empty())//发送给web端
- {
- swsClientMgr.send(JSON_CMD_VALUE_PUSH, tool_json::evs_to_json(arr));
- }
- }
- /**
- * @brief 获取所有的告警事件
- * @param out_data
- */
- void get_all_events(std::vector<std::shared_ptr<ya_event>>& arr)
- {
- {
- std::lock_guard<std::mutex> lock(_mutex);
- auto it_map = _map.begin();
- for(;it_map!=_map.end();++it_map)
- {
- arr.push_back(it_map->second);
- if(ES_DEAL_HELP== it_map->second->m_status)//删除掉已经处理的
- {
- _map.erase(it_map--);
- }
- }
- }
- }
- std::map<uint64_t, std::shared_ptr<ya_event>> _map;
- };
- #endif // MODULE_AREA_H
|