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>
75 ev->invokeOnIdleImpl( std::forward<T>(
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) ) );
115 void clearUnrefLaterList ();
120 ulong runningTimers()
const;
125 static std::shared_ptr<EventDispatcher> instance();
132 static void setThreadDispatcher (
const std::shared_ptr<EventDispatcher> &disp );
138 void *nativeDispatcherHandle ()
const;
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()
virtual void registerTimer(Timer &timer)
std::function< void(int, int)> WaitPidCallback
std::shared_ptr< EventDispatcher > WeakPtr
void unrefLaterImpl(std::shared_ptr< void > &&ptr)
std::function< bool()> TimeoutFunction
std::function< bool()> IdleFunction
EventDispatcher(void *ctx=nullptr)
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 std::shared_ptr< EventDispatcher > instance()
void invokeOnIdleImpl(IdleFunction &&callback)
void invokeAfterImpl(TimeoutFunction &&callback, uint32_t timeout)
std::shared_ptr< EventDispatcher > Ptr
static void invokeOnIdle(T &&callback)
Convenience function to schedule a callback to be called later.
The Timer class provides repetitive and single-shot timers.
#define ZYPP_DECLARE_PRIVATE(Class)
#define LIBZYPP_NG_EXPORT
#define ZYPP_FWD_DECL_TYPE_WITH_REFS(T)