/* @file SafetyDayMng.cpp @brief 安全天数服务管理类,负责冗余调度等 @author 曹顶法 */ #include "SafetyDayMng.h" #include "pub_logger_api/logger.h" kbd_app::CSafetyDayMng::CSafetyDayMng(const kbd_public::SRunAppInfo &stRunAppInfo, const kbd_sys::CProcMngInterfacePtr &ptrProcMng) :m_stRunAppInfo(stRunAppInfo), m_ptrProcMng(ptrProcMng), m_ptrSafetyDayThread(NULL) { } kbd_app::CSafetyDayMng::~CSafetyDayMng() { if (m_ptrSafetyDayThread != NULL) { m_ptrSafetyDayThread->quit(); m_ptrSafetyDayThread.reset(); } m_ptrProcMng.reset(); } /* @brief 冗余切换 */ int kbd_app::CSafetyDayMng::redundantSwitch(bool bMaster, bool bSlave) { LOGWARN("接收到冗余切换指令.Master=[%d],Slave=[%d]", bMaster, bSlave); if (bMaster && !bSlave) //< 为主 { m_ptrSafetyDayThread->resume(); } else //为备或者非主非备 { m_ptrSafetyDayThread->suspend(); } m_ptrProcMng->updateProcessInfo(true, bMaster, bSlave); return kbdSuccess; } /* @brief 初始化 */ int kbd_app::CSafetyDayMng::initialize() { m_ptrSafetyDayThread = boost::make_shared(m_stRunAppInfo); if (m_ptrSafetyDayThread == NULL) { LOGERROR("创建安全天数线程失败"); return kbdFailed; } if (kbdSuccess != m_ptrSafetyDayThread->initialize()) { LOGERROR("初始化安全天数线程失败"); return kbdFailed; } return kbdSuccess; }