xrootd
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
XrdCl::Operation< HasHndl > Class Template Referenceabstract

#include <XrdClOperations.hh>

Inheritance diagram for XrdCl::Operation< HasHndl >:
Inheritance graph
[legend]

Public Member Functions

 Operation ()
 Constructor. More...
 
template<bool from>
 Operation (Operation< from > &&op)
 Move constructor between template instances. More...
 
virtual ~Operation ()
 Destructor. More...
 
virtual std::string ToString ()=0
 Name of the operation. More...
 
virtual Operation< HasHndl > * Move ()=0
 
virtual Operation< true > * ToHandled ()=0
 

Protected Member Functions

void Run (std::promise< XRootDStatus > prms, std::function< void(const XRootDStatus &)> final)
 
virtual XRootDStatus RunImpl ()=0
 
void ForceHandler (const XRootDStatus &status)
 
void AddOperation (Operation< true > *op)
 

Protected Attributes

std::unique_ptr< PipelineHandlerhandler
 Operation handler. More...
 
bool valid
 Flag indicating if it is a valid object. More...
 

Friends

template<bool >
class Operation
 
class Pipeline
 
class PipelineHandler
 
std::future< XRootDStatusAsync (Pipeline)
 

Detailed Description

template<bool HasHndl>
class XrdCl::Operation< HasHndl >

Operation template. An Operation is a once-use-only object - once executed by a Workflow engine it is invalidated. Also if used as an argument for

or | the original object gets invalidated.

Constructor & Destructor Documentation

template<bool HasHndl>
XrdCl::Operation< HasHndl >::Operation ( )
inline

Constructor.

template<bool HasHndl>
template<bool from>
XrdCl::Operation< HasHndl >::Operation ( Operation< from > &&  op)
inline

Move constructor between template instances.

template<bool HasHndl>
virtual XrdCl::Operation< HasHndl >::~Operation ( )
inlinevirtual

Destructor.

Member Function Documentation

template<bool HasHndl>
void XrdCl::Operation< HasHndl >::AddOperation ( Operation< true > *  op)
inlineprotected

Add next operation in the pipeline

Parameters
op: operation to add

References XrdCl::Operation< HasHndl >::handler.

template<bool HasHndl>
void XrdCl::Operation< HasHndl >::ForceHandler ( const XRootDStatus status)
inlineprotected

Handle error caused by missing parameter

Parameters
err: error object
Returns
: default operation status (actual status containg error information is passed to the handler)

References XrdCl::Operation< HasHndl >::handler.

Referenced by XrdCl::Operation< HasHndl >::Run().

template<bool HasHndl>
virtual Operation<HasHndl>* XrdCl::Operation< HasHndl >::Move ( )
pure virtual

Move current object into newly allocated instance

Returns
: the new instance

Implemented in XrdCl::ConcreteOperation< Derived, HasHndl, HdlrFactory, Args >, XrdCl::ConcreteOperation< WriteVImpl, HasHndl, Resp< void >, Arguments...>, XrdCl::ConcreteOperation< RmImpl, HasHndl, Resp< void >, Args...>, XrdCl::ConcreteOperation< DirListImpl, HasHndl, Resp< DirectoryList >, Args...>, XrdCl::ConcreteOperation< ReadImpl, HasHndl, Resp< ChunkInfo >, Arguments...>, XrdCl::ConcreteOperation< FcntlImpl, HasHndl, Resp< Buffer >, Arguments...>, XrdCl::ConcreteOperation< ChModImpl, HasHndl, Resp< void >, Args...>, XrdCl::ConcreteOperation< QueryImpl, HasHndl, Resp< Buffer >, Args...>, XrdCl::ConcreteOperation< TruncateImpl, HasHndl, Resp< void >, Arguments...>, XrdCl::ConcreteOperation< ParallelOperation, HasHndl, Resp< void > >, XrdCl::ConcreteOperation< RmDirImpl, HasHndl, Resp< void >, Args...>, XrdCl::ConcreteOperation< StatImpl, HasHndl, Resp< StatInfo >, Arguments...>, XrdCl::ConcreteOperation< StatFsImpl, HasHndl, Resp< StatInfo >, Args...>, XrdCl::ConcreteOperation< SendInfoImpl, HasHndl, Resp< Buffer >, Args...>, XrdCl::ConcreteOperation< DeepLocateImpl, HasHndl, Resp< LocationInfo >, Args...>, XrdCl::ConcreteOperation< TruncateFsImpl, HasHndl, Resp< void >, Args...>, XrdCl::ConcreteOperation< Derived, HasHndl, Response, Arguments...>, XrdCl::ConcreteOperation< CloseImpl, HasHndl, Resp< void >, Arguments...>, XrdCl::ConcreteOperation< PrepareImpl, HasHndl, Resp< Buffer >, Args...>, XrdCl::ConcreteOperation< PingImpl, HasHndl, Resp< void >, Args...>, XrdCl::ConcreteOperation< VisaImpl, HasHndl, Resp< Buffer >, Arguments...>, XrdCl::ConcreteOperation< SyncImpl, HasHndl, Resp< void >, Arguments...>, XrdCl::ConcreteOperation< LocateImpl, HasHndl, Resp< LocationInfo >, Args...>, XrdCl::ConcreteOperation< OpenImpl, HasHndl, Resp< void >, Arguments...>, XrdCl::ConcreteOperation< WriteImpl, HasHndl, Resp< void >, Arguments...>, XrdCl::ConcreteOperation< MkDirImpl, HasHndl, Resp< void >, Args...>, XrdCl::ConcreteOperation< StatVFSImpl, HasHndl, Resp< StatInfoVFS >, Args...>, XrdCl::ConcreteOperation< MvImpl, HasHndl, Resp< void >, Args...>, XrdCl::ConcreteOperation< ProtocolImpl, HasHndl, Resp< ProtocolInfo >, Args...>, XrdCl::ConcreteOperation< VectorReadImpl, HasHndl, Resp< VectorReadInfo >, Arguments...>, XrdCl::ConcreteOperation< Derived, HasHndl, Response, Args...>, and XrdCl::ConcreteOperation< VectorWriteImpl, HasHndl, Resp< void >, Arguments...>.

Referenced by XrdCl::ConcreteOperation< VectorWriteImpl, HasHndl, Resp< void >, Arguments...>::PipeImpl().

template<bool HasHndl>
void XrdCl::Operation< HasHndl >::Run ( std::promise< XRootDStatus prms,
std::function< void(const XRootDStatus &)>  final 
)
inlineprotected

Run operation

Parameters
prom: the promise that we will have a result
final: the object to call at the end of pipeline
args: forwarded arguments
bucket: number of the bucket with arguments
Returns
: stOK if operation was scheduled for execution successfully, stError otherwise

References XrdCl::Operation< HasHndl >::ForceHandler(), XrdCl::Operation< HasHndl >::handler, XrdCl::Status::IsOK(), and XrdCl::Operation< HasHndl >::RunImpl().

template<bool HasHndl>
virtual XRootDStatus XrdCl::Operation< HasHndl >::RunImpl ( )
protectedpure virtual
template<bool HasHndl>
virtual Operation<true>* XrdCl::Operation< HasHndl >::ToHandled ( )
pure virtual

Move current object into newly allocated instance, and convert it into 'handled' operation.

Returns
: the new instance

Implemented in XrdCl::ConcreteOperation< Derived, HasHndl, HdlrFactory, Args >, XrdCl::ConcreteOperation< WriteVImpl, HasHndl, Resp< void >, Arguments...>, XrdCl::ConcreteOperation< RmImpl, HasHndl, Resp< void >, Args...>, XrdCl::ConcreteOperation< DirListImpl, HasHndl, Resp< DirectoryList >, Args...>, XrdCl::ConcreteOperation< ReadImpl, HasHndl, Resp< ChunkInfo >, Arguments...>, XrdCl::ConcreteOperation< FcntlImpl, HasHndl, Resp< Buffer >, Arguments...>, XrdCl::ConcreteOperation< ChModImpl, HasHndl, Resp< void >, Args...>, XrdCl::ConcreteOperation< QueryImpl, HasHndl, Resp< Buffer >, Args...>, XrdCl::ConcreteOperation< TruncateImpl, HasHndl, Resp< void >, Arguments...>, XrdCl::ConcreteOperation< ParallelOperation, HasHndl, Resp< void > >, XrdCl::ConcreteOperation< RmDirImpl, HasHndl, Resp< void >, Args...>, XrdCl::ConcreteOperation< StatImpl, HasHndl, Resp< StatInfo >, Arguments...>, XrdCl::ConcreteOperation< StatFsImpl, HasHndl, Resp< StatInfo >, Args...>, XrdCl::ConcreteOperation< SendInfoImpl, HasHndl, Resp< Buffer >, Args...>, XrdCl::ConcreteOperation< DeepLocateImpl, HasHndl, Resp< LocationInfo >, Args...>, XrdCl::ConcreteOperation< TruncateFsImpl, HasHndl, Resp< void >, Args...>, XrdCl::ConcreteOperation< Derived, HasHndl, Response, Arguments...>, XrdCl::ConcreteOperation< CloseImpl, HasHndl, Resp< void >, Arguments...>, XrdCl::ConcreteOperation< PrepareImpl, HasHndl, Resp< Buffer >, Args...>, XrdCl::ConcreteOperation< PingImpl, HasHndl, Resp< void >, Args...>, XrdCl::ConcreteOperation< VisaImpl, HasHndl, Resp< Buffer >, Arguments...>, XrdCl::ConcreteOperation< SyncImpl, HasHndl, Resp< void >, Arguments...>, XrdCl::ConcreteOperation< LocateImpl, HasHndl, Resp< LocationInfo >, Args...>, XrdCl::ConcreteOperation< OpenImpl, HasHndl, Resp< void >, Arguments...>, XrdCl::ConcreteOperation< WriteImpl, HasHndl, Resp< void >, Arguments...>, XrdCl::ConcreteOperation< MkDirImpl, HasHndl, Resp< void >, Args...>, XrdCl::ConcreteOperation< StatVFSImpl, HasHndl, Resp< StatInfoVFS >, Args...>, XrdCl::ConcreteOperation< MvImpl, HasHndl, Resp< void >, Args...>, XrdCl::ConcreteOperation< ProtocolImpl, HasHndl, Resp< ProtocolInfo >, Args...>, XrdCl::ConcreteOperation< VectorReadImpl, HasHndl, Resp< VectorReadInfo >, Arguments...>, XrdCl::ConcreteOperation< Derived, HasHndl, Response, Args...>, and XrdCl::ConcreteOperation< VectorWriteImpl, HasHndl, Resp< void >, Arguments...>.

Referenced by XrdCl::ConcreteOperation< VectorWriteImpl, HasHndl, Resp< void >, Arguments...>::PipeImpl().

template<bool HasHndl>
virtual std::string XrdCl::Operation< HasHndl >::ToString ( )
pure virtual

Friends And Related Function Documentation

template<bool HasHndl>
std::future<XRootDStatus> Async ( Pipeline  pipeline)
friend

Helper function, schedules execution of given pipeline

Parameters
pipeline: the pipeline to be executed
Returns
: future status of the operation
template<bool HasHndl>
template<bool >
friend class Operation
friend
template<bool HasHndl>
friend class Pipeline
friend
template<bool HasHndl>
friend class PipelineHandler
friend

Member Data Documentation

template<bool HasHndl>
std::unique_ptr<PipelineHandler> XrdCl::Operation< HasHndl >::handler
protected
template<bool HasHndl>
bool XrdCl::Operation< HasHndl >::valid
protected

Flag indicating if it is a valid object.


The documentation for this class was generated from the following file: