mymangosd/third_party/f8/f8/msgqueue.h
aozhiwei bef63f6cb5 1
2024-05-01 20:45:57 +08:00

36 lines
698 B
C++

#pragma once
#include <functional>
#include <a8/singleton.h>
import a8m.args;
namespace f8
{
typedef std::function<void (const a8m::Args&)> MsgHandleFunc;
typedef list_head* CallBackHandle;
class MsgQueue : public a8::Singleton<MsgQueue>
{
private:
MsgQueue() {};
friend class a8::Singleton<MsgQueue>;
public:
void Init();
void UnInit();
void Update();
bool HasMsg();
CallBackHandle RegisterCallBack(int msgid, MsgHandleFunc cb);
void RemoveCallBack(CallBackHandle handle);
void PostMsg(int msgid, const a8m::Args args);
private:
std::shared_ptr<class MsgQueueImp> imp_;
};
}