16 #ifndef BLOOMBERG_QUANTUM_UTIL_H 17 #define BLOOMBERG_QUANTUM_UTIL_H 26 #include <quantum/quantum_traits.h> 27 #include <quantum/interface/quantum_itask.h> 28 #include <quantum/interface/quantum_icontext.h> 29 #include <quantum/interface/quantum_ipromise.h> 30 #include <quantum/quantum_capture.h> 36 template <
class RET>
class Context;
37 template <
class RET>
class Promise;
47 template<
class RET,
class FUNC,
class ...ARGS>
51 template<
class RET,
class FUNC,
class ...ARGS>
58 template <
class RET,
class INPUT_IT>
64 template <
class RET,
class INPUT_IT>
69 size_t numCoroutineThreads);
94 #ifdef __QUANTUM_PRINT_DEBUG 96 static std::mutex& LogMutex();
102 #include <quantum/util/impl/quantum_util_impl.h> 104 #endif //BLOOMBERG_QUANTUM_UTIL_H Definition: quantum_buffer_impl.h:22
static int mapReduceCoro(CoroContextPtr< std::map< KEY, REDUCED_TYPE >> ctx, INPUT_IT inputIt, size_t num, const Functions::MapFunc< KEY, MAPPED_TYPE, INPUT_IT > &mapper, const Functions::ReduceFunc< KEY, MAPPED_TYPE, REDUCED_TYPE > &reducer)
Definition: quantum_util_impl.h:162
typename ICoroContext< RET >::Ptr CoroContextPtr
Definition: quantum_icoro_context.h:479
Utility to bind a user callable function unto a coroutine or an IO task.
Definition: quantum_util.h:45
Class representing a promised value.
Definition: quantum_icoro_promise.h:77
std::function< RET(const typename std::iterator_traits< INPUT_IT >::value_type &)> ForEachFunc
Definition: quantum_functions.h:34
std::function< std::vector< std::pair< KEY, MAPPED_TYPE > >(const typename std::iterator_traits< INPUT_IT >::value_type &)> MapFunc
Definition: quantum_functions.h:37
Concrete class representing a coroutine or a thread context.
Definition: quantum_icoro_context.h:29
static Function< int(Traits::Yield &)> bindCaller(std::shared_ptr< Context< RET >> ctx, FUNC &&func0, ARGS &&...args0)
Definition: quantum_util_impl.h:88
static int forEachBatchCoro(CoroContextPtr< std::vector< std::vector< RET >>> ctx, INPUT_IT inputIt, size_t num, const Functions::ForEachFunc< RET, INPUT_IT > &func, size_t numCoroutineThreads)
Definition: quantum_util_impl.h:122
typename BoostCoro::pull_type Yield
Definition: quantum_traits.h:58
std::function< std::pair< KEY, REDUCED_TYPE >(std::pair< KEY, std::vector< MAPPED_TYPE > > &&)> ReduceFunc
Definition: quantum_functions.h:40
Similar implementation to std::function except that it allows capture of non-copyable types.
Definition: quantum_capture.h:62
static int mapReduceBatchCoro(CoroContextPtr< std::map< KEY, REDUCED_TYPE >> ctx, INPUT_IT inputIt, size_t num, const Functions::MapFunc< KEY, MAPPED_TYPE, INPUT_IT > &mapper, const Functions::ReduceFunc< KEY, MAPPED_TYPE, REDUCED_TYPE > &reducer)
Definition: quantum_util_impl.h:206
static int forEachCoro(CoroContextPtr< std::vector< RET >> ctx, INPUT_IT inputIt, size_t num, const Functions::ForEachFunc< RET, INPUT_IT > &func)
Definition: quantum_util_impl.h:103
static Function< int()> bindIoCaller(std::shared_ptr< Promise< RET >> promise, FUNC &&func0, ARGS &&...args0)
Definition: quantum_util_impl.h:96