blob: 2c259fc1623fe6b449b98c870aa08cb33b9ad5ef [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005 - 2015 Profactor GmbH, ACIN, fortiss GmbH
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Thomas Strasser, Alois Zoitl,
* - initial implementation and rework communication infrastructure
*******************************************************************************/
#include "eventconn.h"
#include "ecet.h"
#include "funcbloc.h"
CEventConnection::CEventConnection(CFunctionBlock *paSrcFB, TPortId paSrcPortId) :
CConnection(paSrcFB, paSrcPortId){
}
CEventConnection::~CEventConnection(){
}
EMGMResponse CEventConnection::connect(CFunctionBlock *paDstFB, CStringDictionary::TStringId paDstPortNameId){
EMGMResponse retval = e_NO_SUCH_OBJECT;
TPortId nEIID = paDstFB->getEIID(paDstPortNameId);
if(cg_nInvalidEventID != nEIID){
retval = CConnection::addDestination(CConnectionPoint(paDstFB, nEIID));
}
return retval;
}
EMGMResponse CEventConnection::connectToCFBInterface(CFunctionBlock *paDstFB, CStringDictionary::TStringId paDstPortNameId){
EMGMResponse retval = e_NO_SUCH_OBJECT;
TPortId nEOID = paDstFB->getEOID(paDstPortNameId);
if(cg_nInvalidEventID != nEOID){
nEOID |= cgInternal2InterfaceMarker;
retval = CConnection::addDestination(CConnectionPoint(paDstFB, nEOID));
}
return retval;
}
EMGMResponse CEventConnection::disconnect(CFunctionBlock *paDstFB, CStringDictionary::TStringId paDstPortNameId){
EMGMResponse retval = e_NO_SUCH_OBJECT;
TEventID nEIID = paDstFB->getEIID(paDstPortNameId);
if(cg_nInvalidEventID != nEIID){
retval = CConnection::removeDestination(CConnectionPoint(paDstFB, nEIID));
}
return retval;
}
void CEventConnection::triggerEvent(CEventChainExecutionThread& pa_poExecEnv) const {
for(TDestinationIdList::Iterator it = mDestinationIds.begin();
0 != it.getPosition(); ++it){
pa_poExecEnv.addEventEntry(&(*it));
}
}