9 #ifndef ZYPP_NG_LOGICHELPERS_INCLUDED 10 #define ZYPP_NG_LOGICHELPERS_INCLUDED 12 #include <zypp-core/zyppng/async/AsyncOp> 18 template <
typename Op,
typename =
void>
21 template <
typename Op>
121 template <
typename Executor,
typename OpType>
125 using Result =
typename OpType::value_type;
136 template <
typename ...Args,
typename FOpType = OpType>
138 auto op = std::make_shared<Executor>( std::forward<Args>(args)... );
143 template <
typename ...Args,
typename FOpType = OpType>
145 return Executor( std::forward<Args>(args)... ).execute();
154 return static_cast<Executor *
>(
this);
161 template <
typename T>
163 return zyppng::makeReadyResult<T, zyppng::detail::is_async_op_v<OpType>> ( std::forward<T>(res) );
167 template <
typename FOpType = OpType>
169 this->_innerPipeline =
static_cast<Executor*
>(
this)->execute();
170 this->_innerPipeline->onReady([
this](
auto &&val ){
171 this->setReady( std::forward<decltype(val)>(val) );
180 template <
typename Result>
186 template <
template<
typename,
typename>
typename Logic ,
typename OpType>
190 template <
typename ...Args>
199 #define ZYPP_ENABLE_LOGIC_BASE(Executor, OpType) \ 200 using LogicBase<Executor, OpType>::executor; \ 201 using LogicBase<Executor, OpType>::makeReadyResult; \ 203 using MaybeAsyncRef = typename LogicBase<Executor, OpType>:: template MaybeAsyncRef<T> 206 template <
typename Sub>
215 return static_cast<Sub *
>(
this);
218 template <
typename T>
220 return zyppng::makeReadyResult<T, zyppng::detail::is_async_op_v<Sub>> ( std::forward<T>(res) );
224 #define ZYPP_ENABLE_LOGIC_HELPER(Sub) \ 225 using LogicHelper<Sub>::subClass; \ 226 using LogicHelper<Sub>::makeReadyResult; \ 228 using MaybeAsyncRef = typename LogicHelper<Sub>:: template MaybeAsyncRef<T>
AsyncImportKeyFromRepoExecutor ExecutorType
SimpleExecutor(Args &&...args)
static std::enable_if_t< !detail::is_async_op_v< FOpType >, Result > run(Args &&...args)
auto makeReadyResult(T &&res)
auto makeReadyResult(T &&res)
AsyncOpRef< typename Op::value_type > _innerPipeline
static std::enable_if_t< detail::is_async_op_v< FOpType >, AsyncOpRef< Result > > run(Args &&...args)
typename enable_if< B, T >::type enable_if_t
std::enable_if_t< detail::is_async_op_v< FOpType >, void > asyncExecute()
std::conditional_t< detail::is_async_op_v< zyppng::AsyncOp< bool > >, AsyncOpRef< Type >, Type > MaybeAsyncRef
typename conditional< B, T, F >::type conditional_t
std::shared_ptr< AsyncOp< T > > AsyncOpRef
std::conditional_t< detail::is_async_op_v< Sub >, AsyncOpRef< Type >, Type > MaybeAsyncRef
typename zyppng::AsyncOp< bool > ::value_type Result