#include "CAlmSendMng.h" #include "pub_logger_api/logger.h" iot_service::CAlmSendMng::CAlmSendMng(const iot_public::SRunAppInfo &stRunAppInfo, const iot_sys::CProcMngInterfacePtr &ptrProcMng): m_stRunAppInfo(stRunAppInfo), m_ptrProcMng(ptrProcMng), m_ptrAlmRcvThread(NULL), m_ptrAlmSendThread(NULL) { } iot_service::CAlmSendMng::~CAlmSendMng() { LOGINFO("管理类析构"); if(NULL != m_ptrAlmSendThread) { m_ptrAlmSendThread->quit(); m_ptrAlmSendThread.reset(); } if(NULL != m_ptrAlmRcvThread) { m_ptrAlmRcvThread.reset(); } } int iot_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 iot_service::CAlmSendMng::initialize() { m_ptrAlmRcvThread = boost::make_shared(); if(NULL == m_ptrAlmRcvThread) { LOGERROR("创建报警接收线程失败"); return kbdFailed; } if(kbdSuccess != m_ptrAlmRcvThread->initialize()) { LOGERROR("初始化报警接受线程失败"); return kbdFailed; } /********************************我是 分割线*******************************************/ m_ptrAlmSendThread = boost::make_shared(m_ptrAlmRcvThread); if(NULL == m_ptrAlmSendThread) { LOGERROR("创建报警发送线程失败"); return kbdFailed; } if(kbdSuccess != m_ptrAlmSendThread->initialize()) { LOGERROR("报警发送线程初始化失败"); return kbdFailed; } return kbdSuccess; }