26 #ifndef __XRD_CL_OPERATION_HANDLERS_HH__
27 #define __XRD_CL_OPERATION_HANDLERS_HH__
60 std::vector<XAttrStatus> *bulk =
nullptr;
61 response->
Get( bulk );
62 *status = bulk->front().
status;
91 std::vector<XAttr> *bulk =
nullptr;
92 response->
Get( bulk );
93 *status = bulk->front().
status;
94 std::string *rsp =
new std::string( std::move( bulk->front().value ) );
111 template<
typename Response>
120 template<
typename Response>
129 template<
typename Response>
132 Response *ret =
nullptr;
144 template<
typename Response>
148 return GetResponse<Response>( rsp );
156 template<
typename Response>
167 std::function<
void(
XRootDStatus&, Response& )> handleFunction ) :
168 fun( handleFunction )
177 Response *res = GetResponse<Response>( status, response );
178 fun( *status, *res );
208 fun( handleFunction )
236 template<
typename Response,
typename Return>
256 Response *resp = GetResponse<Response>( status, response );
257 task( *status, *resp );
278 template<
typename Return>
327 f(
f ),
fun( handleFunction )
341 fun( *status, *info );
391 const char*
what() const noexcept
417 template<
typename Response>
430 ftr =
prms.get_future();
443 prms.set_exception( ex );
457 template<
typename Response>
479 Response *resp = GetResponse<Response>( response );
483 this->
prms.set_value( std::move( *resp ) );
603 template<
typename Response>
646 template<
typename Response>
667 template<
typename Return>
705 template<
typename Return>
Definition: XrdClAnyObject.hh:33
void Set(Type object, bool own=true)
Definition: XrdClAnyObject.hh:59
void Get(Type &object)
Retrieve the object being held.
Definition: XrdClAnyObject.hh:78
Lambda wrapper.
Definition: XrdClOperationHandlers.hh:317
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback method.
Definition: XrdClOperationHandlers.hh:334
std::function< void(XRootDStatus &, StatInfo &)> fun
user defined function, functor or lambda
Definition: XrdClOperationHandlers.hh:353
File & f
Definition: XrdClOperationHandlers.hh:349
ExOpenFuncWrapper(File &f, std::function< void(XRootDStatus &, StatInfo &)> handleFunction)
Constructor.
Definition: XrdClOperationHandlers.hh:325
A file.
Definition: XrdClFile.hh:45
XRootDStatus Stat(bool force, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Definition: XrdClOperationHandlers.hh:538
virtual ~FinalizeHandler()
Destructor.
Definition: XrdClOperationHandlers.hh:554
std::atomic< ResponseHandler * > handler
The actual operation handler.
Definition: XrdClOperationHandlers.hh:581
virtual void HandleResponseWithHosts(XRootDStatus *status, AnyObject *response, HostList *hostList)
Definition: XrdClOperationHandlers.hh:567
FinalizeHandler(ResponseHandler *handler)
Definition: XrdClOperationHandlers.hh:546
Definition: XrdClOperationHandlers.hh:198
std::function< void(XRootDStatus &)> fun
user defined function, functor or lambda
Definition: XrdClOperationHandlers.hh:227
FunctionWrapper(std::function< void(XRootDStatus &)> handleFunction)
Constructor.
Definition: XrdClOperationHandlers.hh:206
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback method.
Definition: XrdClOperationHandlers.hh:215
Definition: XrdClOperationHandlers.hh:158
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback method.
Definition: XrdClOperationHandlers.hh:175
std::function< void(XRootDStatus &, Response &)> fun
user defined function, functor or lambda
Definition: XrdClOperationHandlers.hh:188
FunctionWrapper(std::function< void(XRootDStatus &, Response &)> handleFunction)
Constructor.
Definition: XrdClOperationHandlers.hh:166
Definition: XrdClOperationHandlers.hh:419
void SetException(const XRootDStatus &err)
Definition: XrdClOperationHandlers.hh:440
std::promise< Response > prms
promise that corresponds to the future
Definition: XrdClOperationHandlers.hh:449
FutureWrapperBase(std::future< Response > &ftr)
Definition: XrdClOperationHandlers.hh:428
FutureWrapper(std::future< void > &ftr)
Definition: XrdClOperationHandlers.hh:507
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback method.
Definition: XrdClOperationHandlers.hh:515
Definition: XrdClOperationHandlers.hh:459
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback method.
Definition: XrdClOperationHandlers.hh:475
FutureWrapper(std::future< Response > &ftr)
Definition: XrdClOperationHandlers.hh:467
Pipeline exception, wrapps an XRootDStatus.
Definition: XrdClOperationHandlers.hh:360
PipelineException & operator=(const PipelineException &ex)
Assigment operator.
Definition: XrdClOperationHandlers.hh:382
PipelineException(const XRootDStatus &error)
Constructor from XRootDStatus.
Definition: XrdClOperationHandlers.hh:366
XRootDStatus error
the XRootDStatus associated with this exception
Definition: XrdClOperationHandlers.hh:409
PipelineException(const PipelineException &ex)
Copy constructor.
Definition: XrdClOperationHandlers.hh:374
const char * what() const noexcept
inherited from std::exception
Definition: XrdClOperationHandlers.hh:391
const XRootDStatus & GetError() const
Definition: XrdClOperationHandlers.hh:399
Handle an async response.
Definition: XrdClXRootDResponses.hh:975
virtual void HandleResponseWithHosts(XRootDStatus *status, AnyObject *response, HostList *hostList)
Definition: XrdClXRootDResponses.hh:988
virtual void HandleResponse(XRootDStatus *status, AnyObject *response)
Definition: XrdClXRootDResponses.hh:1004
Object stat info.
Definition: XrdClXRootDResponses.hh:396
Definition: XrdClOperationHandlers.hh:280
TaskWrapper(std::packaged_task< Return(XRootDStatus &)> &&task)
Constructor.
Definition: XrdClOperationHandlers.hh:288
std::packaged_task< Return(XRootDStatus &)> task
user defined task
Definition: XrdClOperationHandlers.hh:309
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback method.
Definition: XrdClOperationHandlers.hh:296
Definition: XrdClOperationHandlers.hh:238
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback method.
Definition: XrdClOperationHandlers.hh:254
std::packaged_task< Return(XRootDStatus &, Response &)> task
user defined task
Definition: XrdClOperationHandlers.hh:268
TaskWrapper(std::packaged_task< Return(XRootDStatus &, Response &)> &&task)
Constructor.
Definition: XrdClOperationHandlers.hh:246
Helper class for unpacking single XAttrStatus from bulk response.
Definition: XrdClOperationHandlers.hh:41
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback method.
Definition: XrdClOperationHandlers.hh:51
ResponseHandler * handler
Definition: XrdClOperationHandlers.hh:70
UnpackXAttrStatus(ResponseHandler *handler)
Definition: XrdClOperationHandlers.hh:44
Helper class for unpacking single XAttr from bulk response.
Definition: XrdClOperationHandlers.hh:77
ResponseHandler * handler
Definition: XrdClOperationHandlers.hh:103
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback method.
Definition: XrdClOperationHandlers.hh:87
UnpackXAttr(ResponseHandler *handler)
Definition: XrdClOperationHandlers.hh:80
Request status.
Definition: XrdClXRootDResponses.hh:215
Definition: XrdClAnyObject.hh:26
const uint16_t stError
An error occurred that could potentially be retried.
Definition: XrdClStatus.hh:32
FinalizeHandler * make_finalized(ResponseHandler *handler)
Definition: XrdClOperationHandlers.hh:591
std::vector< HostInfo > HostList
Definition: XrdClXRootDResponses.hh:969
const uint16_t errInternal
Internal error.
Definition: XrdClStatus.hh:55
const uint16_t errPipelineFailed
Pipeline failed and operation couldn't be executed.
Definition: XrdClStatus.hh:65
Response * GetResponse(AnyObject *rsp)
Definition: XrdClOperationHandlers.hh:130
Definition: XrdClOperationHandlers.hh:113
static Response value
Definition: XrdClOperationHandlers.hh:114
Definition: XrdClOperationHandlers.hh:605
static ResponseHandler * Create(std::future< Response > &ftr)
Definition: XrdClOperationHandlers.hh:634
static ResponseHandler * Create(ResponseHandler *hdlr)
Definition: XrdClOperationHandlers.hh:612
static ResponseHandler * Create(ResponseHandler &hdlr)
Definition: XrdClOperationHandlers.hh:623
static ResponseHandler * Create(std::packaged_task< Return(XRootDStatus &)> &task)
Definition: XrdClOperationHandlers.hh:706
static ResponseHandler * Create(std::function< void(XRootDStatus &)> func)
Definition: XrdClOperationHandlers.hh:694
Definition: XrdClOperationHandlers.hh:648
static ResponseHandler * Create(std::packaged_task< Return(XRootDStatus &, Response &)> &task)
Definition: XrdClOperationHandlers.hh:668
static ResponseHandler * Create(std::function< void(XRootDStatus &, Response &)> func)
Definition: XrdClOperationHandlers.hh:655
uint16_t status
Status of the execution.
Definition: XrdClStatus.hh:137
bool IsOK() const
We're fine.
Definition: XrdClStatus.hh:120
std::string ToString() const
Create a string representation.