#include <OBTEventSource.h>
Public Member Functions | |
EventSource (ProcessEventFunc processEvent) | |
virtual | ~EventSource () |
void | addListener (TListener &listener) |
void | removeListener (TListener &listener) |
void | publishEvent (const TEvent &event) |
Private Types | |
typedef void(TListener::* | ProcessEventFunc )(const TEvent &) |
pointer to the callback implemented by a listener to process a published event. | |
Private Attributes | |
std::vector < TListener * > | _listeners |
pointers to the added listeners interface | |
ProcessEventFunc | _processEvent |
pointer to the TListener method processing the event |
An event source (i.e., publisher) has two responsibilities: 1. Register listener objects. 2. Notify listener objects when an event happens by sending them a message.
Definition at line 19 of file OBTEventSource.h.
typedef void( TListener ::* OBT::EventSource< TListener, TEvent >::ProcessEventFunc)(const TEvent &) [private] |
pointer to the callback implemented by a listener to process a published event.
Definition at line 22 of file OBTEventSource.h.
OBT::EventSource< TListener, TEvent >::EventSource | ( | ProcessEventFunc | processEvent | ) | [inline] |
constructor
processEvent | pointer to the TListener method processing the event |
Definition at line 68 of file OBTEventSource.h.
References OBT::EventSource< TListener, TEvent >::_processEvent.
00069 { 00070 _processEvent = processEvent ; 00071 }
OBT::EventSource< TListener, TEvent >::~EventSource | ( | ) | [inline, virtual] |
void OBT::EventSource< TListener, TEvent >::addListener | ( | TListener & | listener | ) | [inline] |
subscribe a listener to the publication of the event
listener | reference to the listener instance |
Definition at line 86 of file OBTEventSource.h.
References OBT::EventSource< TListener, TEvent >::_listeners.
00087 { 00088 _listeners.push_back( &listener ); 00089 }
void OBT::EventSource< TListener, TEvent >::removeListener | ( | TListener & | listener | ) | [inline] |
unsubscribe a listener to the publication of the event
listener | reference to the listener instance |
Definition at line 96 of file OBTEventSource.h.
References OBT::EventSource< TListener, TEvent >::_listeners.
00097 { 00098 std::vector< TListener* >::iterator ite( _listeners.begin() ) ; 00099 while ( ite != _listeners.end() ) 00100 { 00101 if ( &listener == *ite ) 00102 { 00103 _listeners.erase( ite ) ; 00104 ite = _listeners.end() ; 00105 } 00106 else 00107 { 00108 ++ite ; 00109 } 00110 } 00111 }
void OBT::EventSource< TListener, TEvent >::publishEvent | ( | const TEvent & | event | ) | [inline] |
publish the event to the subscribed listeners
event | a const reference to the event to publish while processing a published event in its ProcessEventFunc callback. |
Definition at line 118 of file OBTEventSource.h.
References OBT::EventSource< TListener, TEvent >::_listeners, and OBT::EventSource< TListener, TEvent >::_processEvent.
00119 { 00120 std::vector< TListener* >::iterator ite( _listeners.begin() ) ; 00121 for ( ; ite != _listeners.end() ; ++ite ) 00122 { 00123 ( ( *ite )->*_processEvent )( event ); 00124 } 00125 }
std::vector< TListener* > OBT::EventSource< TListener, TEvent >::_listeners [private] |
pointers to the added listeners interface
Definition at line 58 of file OBTEventSource.h.
Referenced by OBT::EventSource< TListener, TEvent >::addListener(), OBT::EventSource< TListener, TEvent >::publishEvent(), and OBT::EventSource< TListener, TEvent >::removeListener().
ProcessEventFunc OBT::EventSource< TListener, TEvent >::_processEvent [private] |
pointer to the TListener method processing the event
Definition at line 61 of file OBTEventSource.h.
Referenced by OBT::EventSource< TListener, TEvent >::EventSource(), and OBT::EventSource< TListener, TEvent >::publishEvent().