#include <XrdClOperations.hh>
Public Member Functions | |
Operation () | |
Constructor. | |
template<bool from> | |
Operation (Operation< from > &&op) | |
Move constructor between template instances. | |
virtual | ~Operation () |
Destructor. | |
virtual std::string | ToString ()=0 |
Name of the operation. | |
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< PipelineHandler > | handler |
Operation handler. | |
bool | valid |
Flag indicating if it is a valid object. | |
Friends | |
class | Operation |
class | Pipeline |
class | PipelineHandler |
std::future< XRootDStatus > | Async (Pipeline) |
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.
XrdCl::Operation< HasHndl >::Operation | ( | ) | [inline] |
Constructor.
XrdCl::Operation< HasHndl >::Operation | ( | Operation< from > && | op | ) | [inline] |
Move constructor between template instances.
virtual XrdCl::Operation< HasHndl >::~Operation | ( | ) | [inline, virtual] |
Destructor.
void XrdCl::Operation< HasHndl >::AddOperation | ( | Operation< true > * | op | ) | [inline, protected] |
Add next operation in the pipeline
op | : operation to add |
References XrdCl::Operation< HasHndl >::handler.
void XrdCl::Operation< HasHndl >::ForceHandler | ( | const XRootDStatus & | status | ) | [inline, protected] |
Handle error caused by missing parameter
err | : error object |
References XrdCl::Operation< HasHndl >::handler.
Referenced by XrdCl::Operation< HasHndl >::Run().
virtual Operation<HasHndl>* XrdCl::Operation< HasHndl >::Move | ( | ) | [pure virtual] |
Move current object into newly allocated 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().
void XrdCl::Operation< HasHndl >::Run | ( | std::promise< XRootDStatus > | prms, | |
std::function< void(const XRootDStatus &)> | final | |||
) | [inline, protected] |
Run operation
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 |
References XrdCl::Operation< HasHndl >::ForceHandler(), XrdCl::Operation< HasHndl >::handler, XrdCl::Status::IsOK(), and XrdCl::Operation< HasHndl >::RunImpl().
virtual XRootDStatus XrdCl::Operation< HasHndl >::RunImpl | ( | ) | [protected, pure virtual] |
Run the actual operation
params | : container with parameters forwarded from previous operation |
bucket | : number of the bucket with arguments |
Implemented in XrdCl::OpenImpl< HasHndl >, XrdCl::ReadImpl< HasHndl >, XrdCl::CloseImpl< HasHndl >, XrdCl::StatImpl< HasHndl >, XrdCl::WriteImpl< HasHndl >, XrdCl::SyncImpl< HasHndl >, XrdCl::TruncateImpl< HasHndl >, XrdCl::VectorReadImpl< HasHndl >, XrdCl::VectorWriteImpl< HasHndl >, XrdCl::WriteVImpl< HasHndl >, XrdCl::FcntlImpl< HasHndl >, XrdCl::VisaImpl< HasHndl >, XrdCl::LocateImpl< HasHndl >, XrdCl::DeepLocateImpl< HasHndl >, XrdCl::MvImpl< HasHndl >, XrdCl::QueryImpl< HasHndl >, XrdCl::TruncateFsImpl< HasHndl >, XrdCl::RmImpl< HasHndl >, XrdCl::MkDirImpl< HasHndl >, XrdCl::RmDirImpl< HasHndl >, XrdCl::ChModImpl< HasHndl >, XrdCl::PingImpl< HasHndl >, XrdCl::StatFsImpl< HasHndl >, XrdCl::StatVFSImpl< HasHndl >, XrdCl::ProtocolImpl< HasHndl >, XrdCl::DirListImpl< HasHndl >, XrdCl::SendInfoImpl< HasHndl >, XrdCl::PrepareImpl< HasHndl >, and XrdCl::ParallelOperation< HasHndl >.
Referenced by XrdCl::Operation< HasHndl >::Run().
virtual Operation<true>* XrdCl::Operation< HasHndl >::ToHandled | ( | ) | [pure virtual] |
Move current object into newly allocated instance, and convert it into 'handled' operation.
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().
virtual std::string XrdCl::Operation< HasHndl >::ToString | ( | ) | [pure virtual] |
Name of the operation.
Implemented in XrdCl::OpenImpl< HasHndl >, XrdCl::ReadImpl< HasHndl >, XrdCl::CloseImpl< HasHndl >, XrdCl::StatImpl< HasHndl >, XrdCl::WriteImpl< HasHndl >, XrdCl::SyncImpl< HasHndl >, XrdCl::TruncateImpl< HasHndl >, XrdCl::VectorReadImpl< HasHndl >, XrdCl::VectorWriteImpl< HasHndl >, XrdCl::WriteVImpl< HasHndl >, XrdCl::FcntlImpl< HasHndl >, XrdCl::VisaImpl< HasHndl >, XrdCl::LocateImpl< HasHndl >, XrdCl::DeepLocateImpl< HasHndl >, XrdCl::MvImpl< HasHndl >, XrdCl::QueryImpl< HasHndl >, XrdCl::TruncateFsImpl< HasHndl >, XrdCl::RmImpl< HasHndl >, XrdCl::MkDirImpl< HasHndl >, XrdCl::RmDirImpl< HasHndl >, XrdCl::ChModImpl< HasHndl >, XrdCl::PingImpl< HasHndl >, XrdCl::StatFsImpl< HasHndl >, XrdCl::StatVFSImpl< HasHndl >, XrdCl::ProtocolImpl< HasHndl >, XrdCl::DirListImpl< HasHndl >, XrdCl::SendInfoImpl< HasHndl >, XrdCl::PrepareImpl< HasHndl >, and XrdCl::ParallelOperation< HasHndl >.
std::future<XRootDStatus> Async | ( | Pipeline | pipeline | ) | [friend] |
Helper function, schedules execution of given pipeline
pipeline | : the pipeline to be executed |
friend class Operation [friend] |
friend class Pipeline [friend] |
friend class PipelineHandler [friend] |
std::unique_ptr<PipelineHandler> XrdCl::Operation< HasHndl >::handler [protected] |
Operation handler.
Referenced by XrdCl::Operation< HasHndl >::AddOperation(), XrdCl::Operation< HasHndl >::ForceHandler(), XrdCl::Operation< HasHndl >::Run(), XrdCl::ParallelOperation< HasHndl >::RunImpl(), XrdCl::PrepareImpl< HasHndl >::RunImpl(), XrdCl::SendInfoImpl< HasHndl >::RunImpl(), XrdCl::DirListImpl< HasHndl >::RunImpl(), XrdCl::ProtocolImpl< HasHndl >::RunImpl(), XrdCl::StatVFSImpl< HasHndl >::RunImpl(), XrdCl::StatFsImpl< HasHndl >::RunImpl(), XrdCl::PingImpl< HasHndl >::RunImpl(), XrdCl::ChModImpl< HasHndl >::RunImpl(), XrdCl::RmDirImpl< HasHndl >::RunImpl(), XrdCl::MkDirImpl< HasHndl >::RunImpl(), XrdCl::RmImpl< HasHndl >::RunImpl(), XrdCl::TruncateFsImpl< HasHndl >::RunImpl(), XrdCl::QueryImpl< HasHndl >::RunImpl(), XrdCl::MvImpl< HasHndl >::RunImpl(), XrdCl::DeepLocateImpl< HasHndl >::RunImpl(), XrdCl::VisaImpl< HasHndl >::RunImpl(), XrdCl::FcntlImpl< HasHndl >::RunImpl(), XrdCl::WriteVImpl< HasHndl >::RunImpl(), XrdCl::VectorWriteImpl< HasHndl >::RunImpl(), XrdCl::VectorReadImpl< HasHndl >::RunImpl(), XrdCl::TruncateImpl< HasHndl >::RunImpl(), XrdCl::SyncImpl< HasHndl >::RunImpl(), XrdCl::WriteImpl< HasHndl >::RunImpl(), XrdCl::StatImpl< HasHndl >::RunImpl(), XrdCl::CloseImpl< HasHndl >::RunImpl(), XrdCl::ReadImpl< HasHndl >::RunImpl(), and XrdCl::ConcreteOperation< VectorWriteImpl, HasHndl, Resp< void >, Arguments...>::ToHandled().
bool XrdCl::Operation< HasHndl >::valid [protected] |
Flag indicating if it is a valid object.