#include "pch.h" #include "ElectricEqpmt_TelesignalisationMng.h" StationEqpmt_Telesignalisation::StationEqpmt_Telesignalisation() { m_nMark = 0; } StationEqpmt_Telesignalisation::~StationEqpmt_Telesignalisation() { m_vecTelesignalisation.clear(); } void StationEqpmt_Telesignalisation::AddStationEqpmtTelesignalisation( ElectricEqpmt_Telesignalisation& telesignalisation ) { m_vecTelesignalisation.push_back( telesignalisation ); } StationEqpmt_Telesignalisation& StationEqpmt_Telesignalisation::operator=( const StationEqpmt_Telesignalisation& telesignalisation) { if ( this == &telesignalisation ) { return *this; } m_vecTelesignalisation.clear(); m_vecTelesignalisation = telesignalisation.m_vecTelesignalisation; return *this; } void StationEqpmt_Telesignalisation::TelesignalisationInit( CommandQueue* pSendList, int nTrainID ) { //if ( m_nMark != 0 ) { DealTelesignalisationMsg( pSendList, nTrainID, m_nMark ); } } void StationEqpmt_Telesignalisation::DealTelesignalisationMsg( CommandQueue* pSendList, int nTrainID, int nMark ) { m_nMark = nMark; OCCCOMMAND tmpSendHC; memset(&tmpSendHC, 0, sizeof(OCCCOMMAND)); tmpSendHC.DesSysType=OCC_SYS_DD_CLIENT; tmpSendHC.TrainningID = nTrainID; tmpSendHC.ScrSysType=OCC_SYS_DD_SVR; TELESIGNALISATION telesignalisation; memset(&telesignalisation, 0, sizeof(TELESIGNALISATION)); string strDestEqpmtStrID; string strShowText; for ( int i = 0; i < m_vecTelesignalisation.size(); i++ ) { telesignalisation.StationID = m_vecTelesignalisation[i].GetStationID(); telesignalisation.ViewID = m_vecTelesignalisation[i].GetViewID(); strDestEqpmtStrID = m_vecTelesignalisation[i].m_strEqpmtStrID; strncpy( telesignalisation.SourceEqpmtStrID, strDestEqpmtStrID.c_str(), sizeof(telesignalisation.SourceEqpmtStrID)); strDestEqpmtStrID = m_vecTelesignalisation[i].GetDestEqpmtStrID(); strncpy( telesignalisation.EqpmtStrID, strDestEqpmtStrID.c_str(), sizeof(telesignalisation.EqpmtStrID)); telesignalisation.EqpmtStaus = m_vecTelesignalisation[i].GetStatus( nMark ); strShowText = m_vecTelesignalisation[i].GetShowText(nMark); strncpy( telesignalisation.ShowText, strShowText.c_str(), sizeof(telesignalisation.ShowText)); telesignalisation.Color = m_vecTelesignalisation[i].GetColor( nMark ); telesignalisation.PropertyPageCtrlID = m_vecTelesignalisation[i].m_nPropertyPageCtrlID; telesignalisation.Mark = m_nMark; tmpSendHC.setPacketValue(&telesignalisation,OCCCOMMAND::eUpdateTelesignalisation); pSendList->push(tmpSendHC); } } ElectricEqpmt_TelesignalisationMng::ElectricEqpmt_TelesignalisationMng() { } ElectricEqpmt_TelesignalisationMng::~ElectricEqpmt_TelesignalisationMng() { m_mapStationEqpmtTelesignalisation.clear(); } void ElectricEqpmt_TelesignalisationMng::AddStationEqpmtTelesignalisation( ElectricEqpmt_Telesignalisation& telesignalisation, int nMark/* = 0 */) { string strKey = FormatKey( telesignalisation.m_nProtectID, telesignalisation.m_strEqpmtStrID ); map::iterator iter = m_mapStationEqpmtTelesignalisation.find(strKey); if ( iter == m_mapStationEqpmtTelesignalisation.end() ) { StationEqpmt_Telesignalisation te; te.AddStationEqpmtTelesignalisation(telesignalisation); te.m_nMark = nMark; m_mapStationEqpmtTelesignalisation.insert( make_pair( strKey, te) ); } else { iter->second.AddStationEqpmtTelesignalisation(telesignalisation); } } string ElectricEqpmt_TelesignalisationMng::FormatKey( int nProtectID, const string& strEqpmtStrID ) { std::string strRet = ""; strRet = std::to_string(nProtectID) + "-" + strEqpmtStrID; return strRet; } void ElectricEqpmt_TelesignalisationMng::DealTelesignalisationMsg( CommandQueue* pSendList,int nTrainID, int nProtectID, const string& strEqpmtStrID, int nMark ) { if ( NULL == pSendList || m_mapStationEqpmtTelesignalisation.size() == 0) { return; } string strKey = FormatKey( nProtectID, strEqpmtStrID ); map::iterator iter = m_mapStationEqpmtTelesignalisation.find(strKey); if ( iter == m_mapStationEqpmtTelesignalisation.end() ) { return; } if ( iter->second.m_vecTelesignalisation.empty() ) { return; } iter->second.DealTelesignalisationMsg(pSendList, nTrainID, nMark ); } void ElectricEqpmt_TelesignalisationMng::TelesignalisationInit( CommandQueue* pSendList, int nTrainID ) { map::iterator iter = m_mapStationEqpmtTelesignalisation.begin(); for ( ; iter != m_mapStationEqpmtTelesignalisation.end(); iter++ ) { iter->second.TelesignalisationInit(pSendList, nTrainID); } }