26 #ifndef __XRD_CL_OPERATION_HANDLERS_HH__
27 #define __XRD_CL_OPERATION_HANDLERS_HH__
61 std::vector<XAttrStatus> *bulk =
nullptr;
62 response->
Get( bulk );
63 if (status && bulk && !bulk->empty()) {
64 *status = bulk->front().
status;
93 std::vector<XAttr> *bulk =
nullptr;
94 response->
Get( bulk );
96 if (bulk && !bulk->empty()) {
98 *status = bulk->front().
status;
100 std::string *rsp =
new std::string(std::move(bulk->front().value));
101 response->
Set( rsp );
118 template<
typename Response>
127 template<
typename Response>
136 template<
typename Response>
139 Response *ret =
nullptr;
151 template<
typename Response>
155 return GetResponse<Response>( rsp );
163 template<
typename Response>
174 std::function<
void(
XRootDStatus&, Response& )> handleFunction ) :
186 fun( handleFunction )
195 std::unique_ptr<XRootDStatus> delst( status );
196 std::unique_ptr<AnyObject> delrsp( response );
197 std::unique_ptr<HostList> delhl( hostList );
198 Response *res = GetResponse<Response>( status, response );
199 fun( *status, *res, *hostList );
237 fun( handleFunction )
246 std::unique_ptr<XRootDStatus> delst( status );
247 std::unique_ptr<AnyObject> delrsp( response );
248 std::unique_ptr<HostList> delhl( hostList );
249 fun( *status, *hostList );
265 template<
typename Response,
typename Return>
276 task( std::move( task ) )
285 std::unique_ptr<XRootDStatus> delst( status );
286 std::unique_ptr<AnyObject> delrsp( response );
287 Response *resp = GetResponse<Response>( status, response );
288 task( *status, *resp );
296 std::packaged_task<Return(
XRootDStatus&, Response& )> task;
306 template<
typename Return>
317 task( std::move( task ) )
326 std::unique_ptr<XRootDStatus> delst( status );
327 std::unique_ptr<AnyObject> delrsp( response );
365 f( f ), fun( handleFunction )
375 std::unique_ptr<XRootDStatus> delst( status );
376 std::unique_ptr<StatInfo> delrsp;
377 std::unique_ptr<HostList> delhl;
382 delrsp.reset( info );
386 fun( *status, *info, *hostList );
433 const char*
what() const noexcept
435 return strerr.c_str();
460 template<
typename Response>
473 ftr =
prms.get_future();
494 prms.set_exception( ex );
510 template<
typename Response>
529 std::unique_ptr<XRootDStatus> delst( status );
530 std::unique_ptr<AnyObject> delrsp( response );
533 Response *resp = GetResponse<Response>( response );
538 this->
prms.set_value( std::move( *resp ) );
569 std::unique_ptr<XRootDStatus> delst( status );
570 std::unique_ptr<AnyObject> delrsp( response );
625 template<
typename Response>
668 template<
typename Response>
701 template<
typename Return>
750 template<
typename Return>
void Set(Type object, bool own=true)
void Get(Type &object)
Retrieve the object being held.
void HandleResponseWithHosts(XRootDStatus *status, AnyObject *response, HostList *hostList)
Callback method.
ExOpenFuncWrapper(const Ctx< File > &f, std::function< void(XRootDStatus &, StatInfo &, HostList &)> handleFunction)
Constructor.
ExOpenFuncWrapper(const Ctx< File > &f, std::function< void(XRootDStatus &, StatInfo &)> handleFunction)
Constructor.
FunctionWrapper(std::function< void(XRootDStatus &, HostList &)> handleFunction)
Constructor.
void HandleResponseWithHosts(XRootDStatus *status, AnyObject *response, HostList *hostList)
Callback method.
FunctionWrapper(std::function< void(XRootDStatus &)> handleFunction)
Constructor.
FunctionWrapper(std::function< void(XRootDStatus &, Response &, HostList &)> handleFunction)
Constructor.
FunctionWrapper(std::function< void(XRootDStatus &, Response &)> handleFunction)
Constructor.
void HandleResponseWithHosts(XRootDStatus *status, AnyObject *response, HostList *hostList)
Callback method.
void SetException(const XRootDStatus &err)
std::promise< Response > prms
promise that corresponds to the future
virtual ~FutureWrapperBase()
Destructor.
FutureWrapperBase(std::future< Response > &ftr)
FutureWrapper(std::future< void > &ftr)
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback method.
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback method.
FutureWrapper(std::future< Response > &ftr)
Pipeline exception, wrapps an XRootDStatus.
PipelineException & operator=(const PipelineException &ex)
Assigment operator.
PipelineException(const XRootDStatus &error)
Constructor from XRootDStatus.
PipelineException(const PipelineException &ex)
Copy constructor.
const char * what() const noexcept
inherited from std::exception
const XRootDStatus & GetError() const
Wrapper class for raw response handler (ResponseHandler).
virtual void HandleResponseWithHosts(XRootDStatus *status, AnyObject *response, HostList *hostList)
RawWrapper(ResponseHandler *handler)
Handle an async response.
virtual void HandleResponseWithHosts(XRootDStatus *status, AnyObject *response, HostList *hostList)
virtual void HandleResponse(XRootDStatus *status, AnyObject *response)
TaskWrapper(std::packaged_task< Return(XRootDStatus &)> &&task)
Constructor.
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback method.
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback method.
TaskWrapper(std::packaged_task< Return(XRootDStatus &, Response &)> &&task)
Constructor.
Helper class for unpacking single XAttrStatus from bulk response.
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback method.
UnpackXAttrStatus(ResponseHandler *handler)
Helper class for unpacking single XAttr from bulk response.
void HandleResponse(XRootDStatus *status, AnyObject *response)
Callback method.
UnpackXAttr(ResponseHandler *handler)
const uint16_t stError
An error occurred that could potentially be retried.
std::vector< HostInfo > HostList
const uint16_t errInternal
Internal error.
const uint16_t errPipelineFailed
Pipeline failed and operation couldn't be executed.
Response * GetResponse(AnyObject *rsp)
Utility class for storing a pointer to operation context.
static ResponseHandler * Create(std::future< Response > &ftr)
static ResponseHandler * Create(ResponseHandler *hdlr)
static ResponseHandler * Create(ResponseHandler &hdlr)
static ResponseHandler * Create(std::function< void(XRootDStatus &, HostList &)> func)
static ResponseHandler * Create(std::packaged_task< Return(XRootDStatus &)> &task)
static ResponseHandler * Create(std::function< void(XRootDStatus &)> func)
static ResponseHandler * Create(std::packaged_task< Return(XRootDStatus &, Response &)> &task)
static ResponseHandler * Create(std::function< void(XRootDStatus &, Response &)> func)
static ResponseHandler * Create(std::function< void(XRootDStatus &, Response &, HostList &)> func)
uint16_t status
Status of the execution.
bool IsOK() const
We're fine.