00001 #include "OMKEventSignalEmitterUtil.h" 00002 00003 using namespace OMK ; 00004 00005 //------------------------------------------------------------------------- 00006 EventSignalEmitterUtil::EventSignalEmitterUtil() 00007 : _signal( true ), 00008 _eventId() 00009 { 00010 } 00011 //------------------------------------------------------------------------- 00012 EventSignalEmitterUtil::~EventSignalEmitterUtil() 00013 { 00014 } 00015 00016 //------------------------------------------------------------------------- 00017 bool EventSignalEmitterUtil::loadParametersUtil( ExtensibleSimulatedObject* owner, 00018 const ConfigurationParameterDescriptor * node ) 00019 { 00020 bool ok = true ; 00021 // Necessary 00022 ok = ok && ParametersAccessor::get( node, "EventName", _eventId, owner ) ; 00023 // Optional by default true 00024 ParametersAccessor::get( node, "Signal", _signal ) ; 00025 // Optional by default empty 00026 ParametersAccessor::get( node, "Listeners", _listeners ) ; 00027 00028 if( _signal ) 00029 { 00030 for( std::vector< Name >::const_iterator i = _listeners.begin() ; 00031 i != _listeners.end() ; 00032 i++ ) 00033 { 00034 SimulatedObject *object = owner->getController().getPointerToSimulatedObjectNamed( *i ) ; 00035 if( object ) object->registerForSignal( _eventId ) ; 00036 } 00037 // No more usefull => delete it 00038 _listeners.clear() ; 00039 } 00040 00041 return ok ; 00042 } 00043 00044 //------------------------------------------------------------------------- 00045 void EventSignalEmitterUtil::sendUtil( ExtensibleSimulatedObject* owner ) 00046 { 00047 if( _signal ) 00048 { // Fire the signal 00049 owner->fireSignal( _eventId ) ; 00050 } 00051 else 00052 { // Send the event for each listener 00053 for( std::vector< Name >::const_iterator i = _listeners.begin() ; 00054 i != _listeners.end() ; 00055 i++ ) 00056 { 00057 owner->sendEvent( *i, _eventId ) ; 00058 } 00059 } 00060 }
Documentation generated on Mon Jun 9 11:45:56 2008 |
Generated with doxygen by Dimitri van Heesch , 1997-2007 |