26 #ifndef __XRD_CL_PARALLELOPERATION_HH__ 27 #define __XRD_CL_PARALLELOPERATION_HH__ 49 template<
bool HasHndl>
73 template<
class Container>
76 static_assert( !HasHndl,
"Constructor is available only operation without handler");
79 auto begin = std::make_move_iterator( container.begin() );
80 auto end = std::make_move_iterator( container.end() );
81 std::copy( begin, end, std::back_inserter(
pipelines ) );
90 std::ostringstream oss;
92 for(
size_t i = 0; i <
pipelines.size(); i++ )
160 std::shared_ptr<Ctx> ctx(
new Ctx( this->
handler.release() ) );
164 for(
size_t i = 0; i <
pipelines.size(); ++i )
173 catch(
const std::exception& ex )
187 template<
class Container>
205 template<
typename ... Others>
206 inline void PipesToVec( std::vector<Pipeline> &v, Operation<false> &operation,
209 template<
typename ... Others>
210 inline void PipesToVec( std::vector<Pipeline> &v, Operation<true> &operation,
213 template<
typename ... Others>
214 inline void PipesToVec( std::vector<Pipeline> &v, Pipeline &pipeline,
220 template<
typename ... Others>
224 v.emplace_back( operation );
228 template<
typename ... Others>
232 v.emplace_back( operation );
236 template<
typename ... Others>
240 v.emplace_back( std::move( pipeline ) );
250 template<
typename ... Operations>
253 constexpr
size_t size =
sizeof...( operations );
254 std::vector<Pipeline> v;
261 #endif // __XRD_CL_OPERATIONS_HH__ void PipesToVec(std::vector< Pipeline > &)
Helper function for converting parameter pack into a vector.
Definition: XrdClParallelOperation.hh:196
std::string ToString()
Definition: XrdClParallelOperation.hh:88
bool IsOK() const
We're fine.
Definition: XrdClStatus.hh:119
Definition: XrdClOperationHandlers.hh:553
void Handle(const XRootDStatus &st)
Definition: XrdClParallelOperation.hh:138
Pipeline exception, wrapps an XRootDStatus.
Definition: XrdClOperationHandlers.hh:311
ParallelOperation(ParallelOperation< from > &&obj)
Constructor: copy-move a ParallelOperation in different state.
Definition: XrdClParallelOperation.hh:60
const uint16_t stError
An error occurred that could potentially be retried.
Definition: XrdClStatus.hh:32
Request status.
Definition: XrdClXRootDResponses.hh:212
Definition: XrdClAnyObject.hh:25
Definition: XrdClOperations.hh:42
Definition: XrdClParallelOperation.hh:37
const XRootDStatus & GetError() const
Definition: XrdClOperationHandlers.hh:351
std::atomic< PipelineHandler * > handler
PipelineHandler of the ParallelOperation.
Definition: XrdClParallelOperation.hh:148
Definition: XrdClOperations.hh:50
ParallelOperation< false > Parallel(Container &container)
Factory function for creating parallel operation from a vector.
Definition: XrdClParallelOperation.hh:188
std::vector< Pipeline > pipelines
Definition: XrdClParallelOperation.hh:181
ParallelOperation(Container &&container)
Definition: XrdClParallelOperation.hh:74
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback function.
~Ctx()
Destructor.
Definition: XrdClParallelOperation.hh:127
XRootDStatus RunImpl()
Definition: XrdClParallelOperation.hh:158
Ctx(PipelineHandler *handler)
Definition: XrdClParallelOperation.hh:119
Definition: XrdClOperations.hh:295
Definition: XrdClParallelOperation.hh:50
Definition: XrdClParallelOperation.hh:112
std::unique_ptr< PipelineHandler > handler
Operation handler.
Definition: XrdClOperations.hh:280
Definition: XrdClOperations.hh:467