78 lines
2.0 KiB
C++
78 lines
2.0 KiB
C++
|
|
#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;
|
|||
|
|
}
|