nim_duilib/base/framework/default_message_pump.h
jiajia_deng 4933d1f2bc Remove dependency on shared
Signed-off-by: jiajia_deng <2894220@gmail.com>
2019-09-20 16:27:58 +08:00

40 lines
853 B
C++

// A implemetation of a cross flatform waitable event based message loop
#ifndef BASE_FRAMEWORK_DEFAULT_MESSAGE_PUMP_H_
#define BASE_FRAMEWORK_DEFAULT_MESSAGE_PUMP_H_
#include "base/framework/message_pump.h"
#include "base/time/time.h"
#include "base/synchronization/waitable_event.h"
namespace nbase
{
class DefaultMessagePump : public MessagePump
{
public:
DefaultMessagePump();
virtual ~DefaultMessagePump() {}
virtual void Run(Delegate* delegate);
virtual void Quit();
virtual void ScheduleWork();
virtual void ScheduleDelayedWork(const TimeTicks& delay_message_time);
private:
void Wait();
void WaitTimeout(const TimeDelta &timeout);
void Wakeup();
WaitableEvent event_;
bool should_quit_;
TimeTicks delayed_work_time_;
DISALLOW_COPY_AND_ASSIGN(DefaultMessagePump);
};
}
#endif // BASE_FRAMEWORK_DEFAULT_MESSAGE_PUMP_H_