📄 eventsource.cxx
字号:
// EventSource.cpp: implementation of the EventSource class.
//
//////////////////////////////////////////////////////////////////////
#include "EventSource.h"
#include <algorithm>
#ifndef WIN32
#define EnterCriticalSection(x) (x)->lock()
#define LeaveCriticalSection(x) (x)->lock()
#endif
using namespace std;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
EventSource::EventSource()
{
#ifdef WIN32
InitializeCriticalSection(&listenersMutex);
#endif
}
EventSource::~EventSource()
{
EnterCriticalSection(&listenersMutex);
listeners.clear();
LeaveCriticalSection(&listenersMutex);
#ifdef WIN32
DeleteCriticalSection(&listenersMutex);
#endif
}
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;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -