14#ifndef ZYPP_BASE_EVENTDISPATCHER_DEFINED
15#define ZYPP_BASE_EVENTDISPATCHER_DEFINED
18#include <zypp-core/ng/base/Signals>
19#include <zypp-core/ng/base/Base>
20#include <zypp-core/ng/base/AbstractEventSource>
50 using
Ptr = EventDispatcherRef;
75 ev->invokeOnIdleImpl( std::move(
callback) );
82 template<
typename T = TimeoutFunction >
87 ev->invokeAfterImpl( std::forward<T>(
callback), timeout );
101 template<
typename T >
105 ev->unrefLaterImpl( std::static_pointer_cast<void>( std::forward<T>(ptr) ) );
125 static std::shared_ptr<EventDispatcher>
instance();
146 static bool waitForFdEvent (
const int fd,
int events,
int &revents,
int &timeout );
friend class AbstractEventSource
static void unrefLater(T &&ptr)
static void invokeAfter(T &&callback, uint32_t timeout)
Convenience function to schedule a callback to be called later.
UnixSignalSourceRef unixSignalSource()
EventDispatcherWeakRef WeakPtr
virtual void registerTimer(Timer &timer)
std::function< void(int, int)> WaitPidCallback
void clearUnrefLaterList()
ulong runningTimers() const
void unrefLaterImpl(std::shared_ptr< void > &&ptr)
std::function< bool()> TimeoutFunction
void * nativeDispatcherHandle() const
Returns the native dispatcher handle if the used implementation supports it.
GMainContext * glibContext()
std::function< bool()> IdleFunction
EventDispatcher(void *ctx=nullptr)
static bool waitForFdEvent(const int fd, int events, int &revents, int &timeout)
virtual void removeTimer(Timer &timer)
void trackChildProcess(int pid, std::function< void(int, int)> callback)
bool untrackChildProcess(int pid)
virtual void updateEventSource(AbstractEventSource ¬ifier, int fd, int mode)
virtual void removeEventSource(AbstractEventSource ¬ifier, int fd=-1)
static void invokeOnIdle(IdleFunction &&callback)
Convenience function to schedule a callback to be called later.
static void setThreadDispatcher(const std::shared_ptr< EventDispatcher > &disp)
static std::shared_ptr< EventDispatcher > instance()
void invokeOnIdleImpl(IdleFunction &&callback)
void invokeAfterImpl(TimeoutFunction &&callback, uint32_t timeout)
struct _GMainContext GMainContext
#define ZYPP_DECLARE_PRIVATE(Class)
#define ZYPP_FWD_DECL_TYPE_WITH_REFS(T)