#ifndef MODULE_MGR_H #define MODULE_MGR_H /** * @brief 业务模块的管理类,包括: * 1、初始化(init:注册web回调函数,读数据库初始化事件列表) * 2、启动线程start:向web发送事件 * 3、结束线程stop * @author 戴月腾 * @date 2018-08-25 */ #include"module_web.h" #include"module_area.h" #include"module_call_help.h" #include"module_call.h" #include"module_over_speed_vehicle.h" #include"module_other_alarm.h" class module_mgr: public singleton_base { private: friend class singleton_base; module_mgr() { } public: /** * @brief 注册web回调函数,读配置文件,启动向web发送线程 */ static void init(config_file& config, std::map& MsgFuncList) { module_web::instance()->init(config, MsgFuncList); module_call::instance()->init(config); } /** * @brief 启动线程start:向web发送事件 */ static void start() { module_over_speed_vehicle::instance()->init_vehicle_category_from_db(); //init_attendance_from_db(); module_attendance_vehicle::instance()->init_attendance_area_from_db(); module_web::instance()->start(); module_call::instance()->start(); } /** * @brief 结束线程stop */ static void stop() { module_web::instance()->stop(); module_call::instance()->stop(); } static void do_status(STATUS_CARD st, uint32_t card_id, int32_t type) { auto card_ptr=card_list::instance()->get(card_list::to_id64(type, card_id)); if(!card_ptr) { log_error("卡不存在card_id=%d", card_id); return; } if(STATUS_HELP == st) { module_call_help::instance()->rev_from_card_help(card_ptr); } if(STATUS_CALL == st) { module_call::instance()->rev_from_card_resp(card_ptr); } if(STATUS_POWER_LOWER_SERIOUS == st) { module_other_alarm::power_lower_serious(card_ptr); } if(STATUS_POWER_NOMARL == st) { module_other_alarm::power_nomarl(card_ptr); } } //private: // static void init_attendance_from_db() // { // const char *sql = "select card_id, start_time, end_time from rt_att_staff;"; // std::string Error; // YADB::CDBResultSet DBRes; // sDBConnPool.Query(sql,DBRes,Error); // uint64_t nCount = DBRes.GetRecordCount( Error ); // if (nCount > 0) // { // log_info( "init_attendance. The record count=%d\n", nCount ); // while ( DBRes.GetNextRecod(Error) ) // { // std::string card_id; // DBRes.GetField( "card_id",card_id, Error ); // std::string end_time; // DBRes.GetField( "end_time",end_time, Error ); // if(end_time.empty()) // { // uint32_t id = tool_other::id64_to_id(card_id); // int32_t type = tool_other::id64_to_type(card_id); // auto card_ptr = card_list::instance()->get(card_list::to_id64(type, id)); // if(card_ptr) // { // std::string start_time; // DBRes.GetField( "start_time",start_time, Error ); // auto mine_tool_ptr = card_ptr->get_mine_tool(); // mine_tool_ptr->m_attendance_start_time = tool_time::to_time_ex(start_time); // mine_tool_ptr->m_stat_attendance = AS_ATTENDANCE; // //std_debug("%s", // // tool_time::to_str_ex(tool_time::to_ms(site_area_ptr->m_attendance_start_time)).c_str()); // } // } // } // } // } }; #endif // MODULE_MGR_H