1#ifndef __SNOTIFYCENTER__H__
2#define __SNOTIFYCENTER__H__
6#include <interface/SNotifyCenter-i.h>
7#include <event/SEventSet.h>
9#if !defined(_WIN32) || _MSC_VER >= 1700
18#define SRUNONUISYNC(fn) SNotifyCenter::getSingletonPtr()->RunOnUISync([&]() { fn })
21#define SRUNONUI(fn) SNotifyCenter::getSingletonPtr()->RunOnUIAsync([=]() { fn })
71 T *pThis =
static_cast<T *
>(
this);
72 return pThis->_HandleEvent(e);
100class SOUI_EXP SNotifyCenter
101 :
public INotifyCenter
105 SINGLETON2_TYPE(SINGLETON_NOTIFYCENTER)
113 SNotifyCenter(
int nIntervel = 20);
118 ~SNotifyCenter(
void);
156 STDMETHOD_(
void,
RunOnUI)(THIS_ IRunnable *pRunnable, BOOL bSync) OVERRIDE;
165 STDMETHOD_(
void,
RunOnUI2)(THIS_ FunRunOnUI fun, WPARAM wp, LPARAM lp, BOOL bSync) OVERRIDE;
196 SList<IEvtSlot *> m_evtHandlerMap;
198 SNotifyReceiver *m_pReceiver;
201 SList<IEvtArgs *> m_ayncEvent;
205 SList<SAutoRefPtr<IRunnable>> m_asyncRunnable;
Header file for SCriticalSection and SAutoLock classes.
Pseudo-Singleton Template.
Wrapper class for a critical section.
void FireEventAsync(IEvtArgs *e) OVERRIDE
触发一个异步通知事件
void RunOnUI2(FunRunOnUI fun, WPARAM wp, LPARAM lp, BOOL bSync) OVERRIDE
在UI线程中运行一个函数
BOOL RegisterEventMap(const IEvtSlot *slot) OVERRIDE
注册一个处理通知的对象
void FireEventSync(IEvtArgs *e) OVERRIDE
触发一个同步通知事件
void RunOnUIAsync(std::function< void(void)> fn)
在UI线程中异步运行一个闭包
void RunOnUI(IRunnable *pRunnable, BOOL bSync) OVERRIDE
在UI线程中运行一个可运行对象
void RunOnUISync(std::function< void(void)> fn)
在UI线程中同步运行一个闭包
BOOL UnregisterEventMap(const IEvtSlot *slot) OVERRIDE
注销一个处理通知的对象
static SNotifyCenter & getSingleton(void)
TAutoEventMapReg()
构造函数,自动注册事件映射
~TAutoEventMapReg()
析构函数,自动注销事件映射
BOOL OnEvent(IEvtArgs *e)
处理事件
void registerNotifyCenter()
注册事件映射
void unregisterNotifyCenter()
注销事件映射
virtual void OnFireEvts()=0
触发多个事件
virtual void OnFireEvent(IEvtArgs *e)=0
触发事件