64 lines
1.5 KiB
C++
64 lines
1.5 KiB
C++
/*
|
|
@file SafetyDayMng.cpp
|
|
@brief 安全天数服务管理类,负责冗余调度等
|
|
@author 曹顶法
|
|
*/
|
|
#include "SafetyDayMng.h"
|
|
#include "pub_logger_api/logger.h"
|
|
|
|
kbd_app::CSafetyDayMng::CSafetyDayMng(const iot_public::SRunAppInfo &stRunAppInfo,
|
|
const iot_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<CSafetyDayThread>(m_stRunAppInfo);
|
|
if (m_ptrSafetyDayThread == NULL)
|
|
{
|
|
LOGERROR("创建安全天数线程失败");
|
|
return kbdFailed;
|
|
}
|
|
|
|
if (kbdSuccess != m_ptrSafetyDayThread->initialize())
|
|
{
|
|
LOGERROR("初始化安全天数线程失败");
|
|
return kbdFailed;
|
|
}
|
|
|
|
return kbdSuccess;
|
|
}
|