// EventSource.cpp: implementation of the EventSource class. // ////////////////////////////////////////////////////////////////////// #include "EventSource.h" #include using namespace std; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// EventSource::EventSource() { InitializeCriticalSection(&listenersMutex); } EventSource::~EventSource() { EnterCriticalSection(&listenersMutex); listeners.clear(); LeaveCriticalSection(&listenersMutex); DeleteCriticalSection(&listenersMutex); } int EventSource::AddListener(void *listener) { EnterCriticalSection(&listenersMutex); if (find(listeners.begin(), listeners.end(), listener) == listeners.end()) { listeners.push_back(listener); } LeaveCriticalSection(&listenersMutex); return 0; } int EventSource::RemoveListener(void *listener) { EnterCriticalSection(&listenersMutex); vector::iterator position = NULL; position = find(listeners.begin(), listeners.end(), listener); if (position != listeners.end()) { listeners.erase(position); } LeaveCriticalSection(&listenersMutex); return 0; }