7 #ifndef _QI_DETAIL_EVENTLOOP_HXX_
8 #define _QI_DETAIL_EVENTLOOP_HXX_
31 typename std::enable_if<detail::IsAsyncBind<F>::value,
typename std::decay<decltype(cb())>::type>::type
33 if (delay != qi::Duration::zero())
40 typename std::enable_if<!detail::IsAsyncBind<F>::value,
47 typename std::enable_if<detail::IsAsyncBind<F>::value,
typename std::decay<decltype(cb())>::type>::type
53 typename std::enable_if<!detail::IsAsyncBind<F>::value,
61 auto tryUnwrap(
const F& future,
int) -> decltype(future.unwrap())
63 return future.unwrap();
74 template <
typename F,
typename Arg0,
typename... Args>
76 typename std::enable_if<std::is_base_of<Actor, typename std::decay<Arg0>::type>::value,
82 template <
typename F,
typename Arg0,
typename... Args>
84 typename std::enable_if<!std::is_base_of<Actor, typename std::decay<Arg0>::type>::value,
85 typename std::decay<decltype((arg0->*cb)(std::forward<Args>(args)...))>::type>::type
87 return (arg0->*cb)(std::forward<Args>(args)...);
DurationType< int64_t, boost::micro > MicroSeconds
SteadyClock::time_point SteadyClockTimePoint
Steady clock time point.
Future< R > async(const boost::function< R()> &callback, uint64_t usDelay)
Call given function once after given delay in microseconds.
void nullConverter(void *, R &)
auto invokeMaybeActor(F &&cb, Arg0 *arg0, Args &&...args) -> typename std::enable_if< std::is_base_of< Actor, typename std::decay< Arg0 >::type >::value, decltype(tryUnwrap(qi::async(qi::bind(cb, arg0, std::forward< Args >(args)...)), 0))>::type
auto asyncDelay(F &&callback, qi::Duration delay) -> qi::Future< typename std::decay< decltype(callback())>::type >
call a callback asynchronously to be executed in delay
auto asyncMaybeActor(F &&cb, qi::Duration delay) -> typename std::enable_if< detail::IsAsyncBind< F >::value, typename std::decay< decltype(cb())>::type >::type
Future< R > async(boost::function< R()> callback, uint64_t usDelay)
EventLoop * getEventLoop()
Return the global eventloop, created on demand on first call.
auto tryUnwrap(const F &future, int) -> decltype(future.unwrap())
auto asyncAt(F &&callback, qi::SteadyClockTimePoint tp) -> qi::Future< typename std::decay< decltype(callback())>::type >
call a callback asynchronously to be executed on tp
std::enable_if< std::is_function< RF >::value, boost::function< RF > >::type bind(AF &&fun, Arg0 &&arg0, Args &&...args)