OMKEventSignalEmitterUtil.cpp

Go to the documentation of this file.
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 }

logo OpenMask

Documentation generated on Mon Jun 9 11:45:56 2008

Generated with doxygen by Dimitri van Heesch ,   1997-2007