// EventSource.cpp: implementation of the EventSource class.
|
//
|
//////////////////////////////////////////////////////////////////////
|
|
#include "EventSource.h"
|
#include <algorithm>
|
|
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<void *>::iterator position = NULL;
|
position = find(listeners.begin(), listeners.end(), listener);
|
if (position != listeners.end())
|
{
|
listeners.erase(position);
|
}
|
LeaveCriticalSection(&listenersMutex);
|
return 0;
|
}
|