78 lines
2.0 KiB
C++
Raw Normal View History

#include "CAlmSendMng.h"
#include "pub_logger_api/logger.h"
kbd_service::CAlmSendMng::CAlmSendMng(const kbd_public::SRunAppInfo &stRunAppInfo,
const kbd_sys::CProcMngInterfacePtr &ptrProcMng):
m_stRunAppInfo(stRunAppInfo),
m_ptrProcMng(ptrProcMng),
m_ptrAlmRcvThread(NULL),
m_ptrAlmSendThread(NULL)
{
}
kbd_service::CAlmSendMng::~CAlmSendMng()
{
LOGINFO("管理类析构");
if(NULL != m_ptrAlmSendThread)
{
m_ptrAlmSendThread->quit();
m_ptrAlmSendThread.reset();
}
if(NULL != m_ptrAlmRcvThread)
{
m_ptrAlmRcvThread.reset();
}
}
int kbd_service::CAlmSendMng::redundantSwitch(bool bMaster, bool bSlave)
{
LOGINFO("接收到冗余切换指令.Master=[%d],Slave=[%d]",bMaster,bSlave);
if(bMaster && !bSlave)
{
m_ptrAlmRcvThread->resumeThread();
}
else
{
m_ptrAlmRcvThread->suspendThread();
}
//发送的线程一直为主就可以了,在没有报警时几乎不消耗资源。
m_ptrAlmSendThread->resume();
m_ptrProcMng->updateProcessInfo(true, bMaster, bSlave);
return kbdSuccess;
}
int kbd_service::CAlmSendMng::initialize()
{
m_ptrAlmRcvThread = boost::make_shared<CAlmRcvThread>();
if(NULL == m_ptrAlmRcvThread)
{
LOGERROR("创建报警接收线程失败");
return kbdFailed;
}
if(kbdSuccess != m_ptrAlmRcvThread->initialize())
{
LOGERROR("初始化报警接受线程失败");
return kbdFailed;
}
/********************************我是 分割线*******************************************/
m_ptrAlmSendThread = boost::make_shared<CAlmSendThread>(m_ptrAlmRcvThread);
if(NULL == m_ptrAlmSendThread)
{
LOGERROR("创建报警发送线程失败");
return kbdFailed;
}
if(kbdSuccess != m_ptrAlmSendThread->initialize())
{
LOGERROR("报警发送线程初始化失败");
return kbdFailed;
}
return kbdSuccess;
}