Go to the documentation of this file.
26 #ifndef __XRD_CL_FILE_OPERATIONS_HH__
27 #define __XRD_CL_FILE_OPERATIONS_HH__
44 template<
template<
bool>
class Derived,
bool HasHndl,
typename Response,
typename ... Arguments>
48 template<
template<
bool>
class, bool,
typename,
typename ...>
friend class FileOperation;
94 template<
bool HasHndl>
147 Arg<
Access::Mode>>( std::move( f ), std::move( url ), std::move( flags ),
178 template<
typename Hdlr>
181 ExResp factory( *this->file );
182 return this->StreamImpl( factory.
Create( hdlr ) );
203 const std::string &url = std::get<UrlArg>( this->args );
206 uint16_t timeout = pipelineTimeout < this->timeout ?
207 pipelineTimeout : this->timeout;
208 return this->file->Open( url, flags, mode, handler, timeout );
216 template<
bool HasHndl>
218 Arg<uint64_t>, Arg<uint32_t>, Arg<void*>>
252 uint64_t offset = std::get<OffsetArg>( this->
args ).Get();
253 uint32_t size = std::get<SizeArg>( this->
args ).Get();
254 void *buffer = std::get<BufferArg>( this->
args ).Get();
255 uint16_t
timeout = pipelineTimeout < this->timeout ?
256 pipelineTimeout : this->
timeout;
267 return ReadImpl<false>( std::move( file ), std::move( offset ), std::move( size ),
268 std::move( buffer ) ).
Timeout( timeout );
274 template<
bool HasHndl>
303 uint16_t
timeout = pipelineTimeout < this->timeout ?
304 pipelineTimeout : this->
timeout;
313 template<
bool HasHndl>
347 bool force = std::get<ForceArg>( this->
args ).Get();
348 uint16_t
timeout = pipelineTimeout < this->timeout ?
349 pipelineTimeout : this->
timeout;
366 template<
bool HasHndl>
368 Arg<uint32_t>, Arg<const void*>>
402 uint64_t offset = std::get<OffsetArg>( this->
args ).Get();
403 uint32_t size = std::get<SizeArg>( this->
args ).Get();
404 const void *buffer = std::get<BufferArg>( this->
args ).Get();
405 uint16_t
timeout = pipelineTimeout < this->timeout ?
406 pipelineTimeout : this->
timeout;
417 return WriteImpl<false>( std::move( file ), std::move( offset ), std::move( size ),
418 std::move( buffer ) ).
Timeout( timeout );
424 template<
bool HasHndl>
453 uint16_t
timeout = pipelineTimeout < this->timeout ?
454 pipelineTimeout : this->
timeout;
463 template<
bool HasHndl>
497 uint64_t size = std::get<SizeArg>( this->
args ).Get();
498 uint16_t
timeout = pipelineTimeout < this->timeout ?
499 pipelineTimeout : this->
timeout;
516 template<
bool HasHndl>
518 Resp<VectorReadInfo>, Arg<ChunkList>, Arg<void*>>
553 void *buffer = std::get<BufferArg>( this->
args ).Get();
554 uint16_t
timeout = pipelineTimeout < this->timeout ?
555 pipelineTimeout : this->
timeout;
564 template<
bool HasHndl>
585 return "VectorWrite";
599 const ChunkList &chunks = std::get<ChunksArg>( this->
args ).Get();
600 uint16_t
timeout = pipelineTimeout < this->timeout ?
601 pipelineTimeout : this->
timeout;
610 template<
bool HasHndl>
612 Arg<struct iovec*>, Arg<int>>
646 uint64_t offset = std::get<OffsetArg>( this->
args ).Get();
647 const struct iovec *
iov = std::get<IovArg>( this->
args ).Get();
648 int iovcnt = std::get<IovcntArg>( this->
args ).Get();
649 uint16_t
timeout = pipelineTimeout < this->timeout ?
650 pipelineTimeout : this->
timeout;
659 template<
bool HasHndl>
693 Buffer &arg = std::get<BufferArg>( this->
args ).Get();
694 uint16_t
timeout = pipelineTimeout < this->timeout ?
695 pipelineTimeout : this->
timeout;
704 template<
bool HasHndl>
733 uint16_t
timeout = pipelineTimeout < this->timeout ?
734 pipelineTimeout : this->
timeout;
743 template<
bool HasHndl>
745 Arg<std::string>, Arg<std::string>>
765 return "SetXAttrImpl";
779 std::string &name = std::get<NameArg>( this->
args ).Get();
780 std::string &value = std::get<ValueArg>( this->
args ).Get();
782 std::vector<xattr_t> attrs;
783 attrs.push_back(
xattr_t( name, value ) );
786 uint16_t
timeout = pipelineTimeout < this->timeout ?
787 pipelineTimeout : this->
timeout;
789 if( !st.
IsOK() )
delete h;
806 template<
bool HasHndl>
808 Resp<std::vector<XAttrStatus>>, Arg<std::vector<xattr_t>>>
828 return "SetXAttrBulkImpl";
843 std::vector<xattr_t> &attrs = std::get<AttrsArg>( this->
args ).Get();
844 uint16_t
timeout = pipelineTimeout < this->timeout ?
845 pipelineTimeout : this->
timeout;
862 template<
bool HasHndl>
884 return "GetXAttrImpl";
898 std::string &name = std::get<NameArg>( this->
args ).Get();
900 std::vector<std::string> attrs;
901 attrs.push_back( name );
904 uint16_t
timeout = pipelineTimeout < this->timeout ?
905 pipelineTimeout : this->
timeout;
924 template<
bool HasHndl>
926 Arg<std::vector<std::string>>>
946 return "GetXAttrBulkImpl";
961 std::vector<std::string> &attrs = std::get<NamesArg>( this->
args ).Get();
962 uint16_t
timeout = pipelineTimeout < this->timeout ?
963 pipelineTimeout : this->
timeout;
980 template<
bool HasHndl>
1001 return "DelXAttrImpl";
1015 std::string &name = std::get<NameArg>( this->
args ).Get();
1017 std::vector<std::string> attrs;
1018 attrs.push_back( name );
1021 uint16_t
timeout = pipelineTimeout < this->timeout ?
1022 pipelineTimeout : this->
timeout;
1024 if( !st.
IsOK() )
delete h;
1041 template<
bool HasHndl>
1043 Resp<std::vector<XAttrStatus>>, Arg<std::vector<std::string>>>
1063 return "DelXAttrBulkImpl";
1078 std::vector<std::string> &attrs = std::get<NamesArg>( this->
args ).Get();
1079 uint16_t
timeout = pipelineTimeout < this->timeout ?
1080 pipelineTimeout : this->
timeout;
1097 template<
bool HasHndl>
1099 Resp<std::vector<XAttr>>>
1113 return "ListXAttrImpl";
1128 uint16_t
timeout = pipelineTimeout < this->timeout ?
1129 pipelineTimeout : this->
timeout;
1144 #endif // __XRD_CL_FILE_OPERATIONS_HH__
GetXAttrImpl< false > GetXAttr(Ctx< File > file, Arg< std::string > name)
Definition: XrdClFileOperations.hh:916
Definition: XrdClOperationHandlers.hh:624
@ ForceArg
Definition: XrdClFileOperations.hh:326
Derived< HasHndl > Timeout(uint16_t timeout)
Set operation timeout.
Definition: XrdClOperations.hh:651
Write operation (.
Definition: XrdClFileOperations.hh:369
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:841
Handle an async response.
Definition: XrdClXRootDResponses.hh:1037
SetXAttr bulk operation (.
Definition: XrdClFileOperations.hh:809
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:896
WriteVImpl< false > WriteV
Definition: XrdClFileOperations.hh:654
std::string ToString()
Definition: XrdClFileOperations.hh:677
OpenImpl< false > Open
Definition: XrdClFileOperations.hh:211
CloseImpl< false > Close
Definition: XrdClFileOperations.hh:308
Access mode.
Definition: XrdClFileSystem.hh:117
@ BufferArg
Definition: XrdClFileOperations.hh:672
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:400
Definition: XrdClFileOperations.hh:106
ResponseHandler * Create(std::function< void(XRootDStatus &, StatInfo &)> func)
Definition: XrdClFileOperations.hh:122
std::string ToString()
Definition: XrdClFileOperations.hh:386
TruncateImpl< false > Truncate(Ctx< File > file, Arg< uint64_t > size)
Definition: XrdClFileOperations.hh:508
std::string ToString()
Definition: XrdClFileOperations.hh:999
virtual ~FileOperation()
Destructor.
Definition: XrdClFileOperations.hh:78
@ IovArg
Definition: XrdClFileOperations.hh:625
GetXAttr bulk operation (.
Definition: XrdClFileOperations.hh:927
SetXAttrImpl< false > SetXAttr(Ctx< File > file, Arg< std::string > name, Arg< std::string > value)
Definition: XrdClFileOperations.hh:798
uint16_t timeout
Operation timeout.
Definition: XrdClOperations.hh:746
std::string ToString()
Definition: XrdClFileOperations.hh:481
OpenImpl< true > operator>>(Hdlr &&hdlr)
Definition: XrdClFileOperations.hh:179
Open operation (.
Definition: XrdClFileOperations.hh:97
VectorRead operation (.
Definition: XrdClFileOperations.hh:519
Utility class for storing a pointer to operation context.
Definition: XrdClCtx.hh:38
SetXAttr operation (.
Definition: XrdClFileOperations.hh:746
Definition: XrdClOperations.hh:59
OpenImpl(Ctx< File > f, Arg< std::string > url, Arg< OpenFlags::Flags > flags, Arg< Access::Mode > mode=Access::None)
Constructor (.
Definition: XrdClFileOperations.hh:144
@ NameArg
Definition: XrdClFileOperations.hh:877
Stat operation (.
Definition: XrdClFileOperations.hh:315
GetXAttr operation (.
Definition: XrdClFileOperations.hh:865
DelXAttrImpl< false > DelXAttr(Ctx< File > file, Arg< std::string > name)
Definition: XrdClFileOperations.hh:1033
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:495
std::string ToString()
Definition: XrdClFileOperations.hh:944
Definition: XrdClArg.hh:295
std::unique_ptr< PipelineHandler > handler
Operation handler.
Definition: XrdClOperations.hh:304
WriteV operation (.
Definition: XrdClFileOperations.hh:613
Ctx< File > file
The file object itself.
Definition: XrdClFileOperations.hh:88
std::string ToString()
Definition: XrdClFileOperations.hh:882
@ NamesArg
Definition: XrdClFileOperations.hh:1056
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:71
friend class FileOperation
Definition: XrdClFileOperations.hh:48
@ OffsetArg
Definition: XrdClFileOperations.hh:231
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:550
FileOperation(Ctx< File > f, Arguments... args)
Definition: XrdClFileOperations.hh:57
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:959
@ NameArg
Definition: XrdClFileOperations.hh:758
StatImpl< false > Stat(Ctx< File > file, Arg< bool > force, uint16_t timeout=0)
Definition: XrdClFileOperations.hh:358
std::string ToString()
Definition: XrdClFileOperations.hh:236
std::string ToString()
Definition: XrdClFileOperations.hh:717
Close operation (.
Definition: XrdClFileOperations.hh:276
Mode
Access mode.
Definition: XrdClFileSystem.hh:122
std::tuple< Args... > args
Operation arguments.
Definition: XrdClOperations.hh:741
Truncate operation (.
Definition: XrdClFileOperations.hh:465
Definition: XrdClOperations.hh:522
@ AttrsArg
Definition: XrdClFileOperations.hh:821
std::string ToString()
Definition: XrdClFileOperations.hh:188
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:301
@ SizeArg
Definition: XrdClFileOperations.hh:231
std::string ToString()
Definition: XrdClFileOperations.hh:763
std::string ToString()
Definition: XrdClFileOperations.hh:287
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:597
@ OffsetArg
Definition: XrdClFileOperations.hh:381
Visa operation (.
Definition: XrdClFileOperations.hh:706
#define open
Definition: XrdPosix.hh:71
Request status.
Definition: XrdClXRootDResponses.hh:215
FcntlImpl< false > Fcntl
Definition: XrdClFileOperations.hh:699
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:451
@ SizeArg
Definition: XrdClFileOperations.hh:381
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition: XrdClXRootDResponses.hh:966
OpenImpl(OpenImpl< from > &&open)
Definition: XrdClFileOperations.hh:160
std::string ToString()
Definition: XrdClFileOperations.hh:437
@ NamesArg
Definition: XrdClFileOperations.hh:939
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:250
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:1076
@ ChunksArg
Definition: XrdClFileOperations.hh:578
Read operation (.
Definition: XrdClFileOperations.hh:219
VectorWrite operation (.
Definition: XrdClFileOperations.hh:567
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:731
ReadImpl< false > Read(Ctx< File > file, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< void * > buffer, uint16_t timeout=0)
Factory for creating ReadImpl objects.
Definition: XrdClFileOperations.hh:264
WriteImpl< false > Write(Ctx< File > file, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< const void * > buffer, uint16_t timeout=0)
Factory for creating WriteImpl objects.
Definition: XrdClFileOperations.hh:414
std::string ToString()
Definition: XrdClFileOperations.hh:536
VisaImpl< false > Visa
Definition: XrdClFileOperations.hh:738
Definition: XrdClFileOperations.hh:46
Helper class for unpacking single XAttr from bulk response.
Definition: XrdClOperationHandlers.hh:77
ExResp(const Ctx< File > &file)
Definition: XrdClFileOperations.hh:112
std::string ToString()
Definition: XrdClFileOperations.hh:826
std::string ToString()
Definition: XrdClFileOperations.hh:331
bool IsOK() const
We're fine.
Definition: XrdClStatus.hh:120
Definition: XrdOucIOVec.hh:65
VectorReadImpl< false > VectorRead
Definition: XrdClFileOperations.hh:559
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:691
ListXAttrImpl< false > ListXAttr(Ctx< File > file)
Definition: XrdClFileOperations.hh:1138
Lambda wrapper.
Definition: XrdClOperationHandlers.hh:312
@ BufferArg
Definition: XrdClFileOperations.hh:231
@ IovcntArg
Definition: XrdClFileOperations.hh:625
Definition: XrdClAnyObject.hh:26
Fcntl operation (.
Definition: XrdClFileOperations.hh:661
std::string ToString()
Definition: XrdClFileOperations.hh:1111
FileOperation(FileOperation< Derived, from, Response, Arguments... > &&op)
Definition: XrdClFileOperations.hh:69
std::string ToString()
Definition: XrdClFileOperations.hh:583
@ ChunksArg
Definition: XrdClFileOperations.hh:531
VectorWriteImpl< false > VectorWrite
Definition: XrdClFileOperations.hh:605
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:201
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:1013
Ctx< File > file
The underlying XrdCl::File object.
Definition: XrdClFileOperations.hh:136
@ None
Definition: XrdClFileSystem.hh:123
Definition: XrdClArg.hh:233
DelXAttr bulk operation (.
Definition: XrdClFileOperations.hh:1044
Object stat info.
Definition: XrdClXRootDResponses.hh:396
@ BufferArg
Definition: XrdClFileOperations.hh:531
Sync operation (.
Definition: XrdClFileOperations.hh:426
@ BufferArg
Definition: XrdClFileOperations.hh:381
@ ValueArg
Definition: XrdClFileOperations.hh:758
@ SizeArg
Definition: XrdClFileOperations.hh:476
Binary blob representation.
Definition: XrdClBuffer.hh:34
DelXAttr operation (.
Definition: XrdClFileOperations.hh:983
SyncImpl< false > Sync
Definition: XrdClFileOperations.hh:458
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:345
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:644
ListXAttr bulk operation (.
Definition: XrdClFileOperations.hh:1100
std::string ToString()
Definition: XrdClFileOperations.hh:1061
@ NameArg
Definition: XrdClFileOperations.hh:994
Helper class for unpacking single XAttrStatus from bulk response.
Definition: XrdClOperationHandlers.hh:42
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:1126
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:777
@ OffsetArg
Definition: XrdClFileOperations.hh:625
Flags
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:76
std::tuple< std::string, std::string > xattr_t
Extended attribute key - value pair.
Definition: XrdClXRootDResponses.hh:285
@ UrlArg
Definition: XrdClFileOperations.hh:170
std::string ToString()
Definition: XrdClFileOperations.hh:630