#ifndef SWIFTEN_MainEventLoop_H #define SWIFTEN_MainEventLoop_H #include #include "Swiften/EventLoop/Deleter.h" #include "Swiften/EventLoop/EventLoop.h" namespace Swift { class EventLoop; class MainEventLoop { friend class EventLoop; public: /** * Post an event from the given owner to the event loop. * If the owner is destroyed, all events should be removed from the * loop using removeEventsFromOwner(). */ static void postEvent(boost::function event, void* owner = 0); static void removeEventsFromOwner(void* owner); template static void deleteLater(T* t) { getInstance()->postEvent(Deleter(t), 0); } private: static void setInstance(EventLoop*); static void resetInstance(); static EventLoop* getInstance(); private: static EventLoop* instance_; }; } #endif