Go to the documentation of this file.
26 #ifndef __XRD_CL_FILE_OPERATIONS_HH__
27 #define __XRD_CL_FILE_OPERATIONS_HH__
43 template<
template<
bool>
class Derived,
bool HasHndl,
typename Response,
typename ... Arguments>
47 template<
template<
bool>
class, bool,
typename,
typename ...>
friend class FileOperation;
103 template<
bool HasHndl>
156 Arg<
Access::Mode>>( f, std::move( url ), std::move( flags ), std::move( mode ) )
166 Arg<
Access::Mode>>( &f, std::move( url ), std::move( flags ), std::move( mode ) )
196 template<
typename Hdlr>
199 ExResp factory( *this->file );
200 return this->StreamImpl( factory.
Create( hdlr ) );
224 std::string url = std::get<UrlArg>( this->args ).Get();
226 Access::Mode mode = std::get<ModeArg>( this->args ).Get();
227 return this->file->Open( url, flags, mode, this->handler.get() );
233 catch(
const std::exception& ex )
244 template<
bool HasHndl>
246 Arg<uint64_t>, Arg<uint32_t>, Arg<void*>>
282 uint64_t offset = std::get<OffsetArg>( this->
args ).Get();
283 uint32_t size = std::get<SizeArg>( this->
args ).Get();
284 void *buffer = std::get<BufferArg>( this->
args ).Get();
291 catch(
const std::exception& ex )
302 template<
bool HasHndl>
339 template<
bool HasHndl>
375 bool force = std::get<ForceArg>( this->
args ).Get();
382 catch(
const std::exception& ex )
410 template<
bool HasHndl>
412 Arg<uint32_t>, Arg<void*>>
448 uint64_t offset = std::get<OffsetArg>( this->
args ).Get();
449 uint32_t size = std::get<SizeArg>( this->
args ).Get();
450 void *buffer = std::get<BufferArg>( this->
args ).Get();
457 catch(
const std::exception& ex )
468 template<
bool HasHndl>
505 template<
bool HasHndl>
541 uint64_t size = std::get<SizeArg>( this->
args ).Get();
548 catch(
const std::exception& ex )
576 template<
bool HasHndl>
578 Resp<VectorReadInfo>, Arg<ChunkList>, Arg<void*>>
615 void *buffer = std::get<BufferArg>( this->
args ).Get();
622 catch(
const std::exception& ex )
633 template<
bool HasHndl>
654 return "VectorWrite";
670 const ChunkList chunks( std::get<ChunksArg>( this->
args ).Get() );
677 catch(
const std::exception& ex )
688 template<
bool HasHndl>
690 Arg<struct iovec*>, Arg<int>>
726 uint64_t offset = std::get<OffsetArg>( this->
args ).Get();
727 const struct iovec *iov = std::get<IovArg>( this->
args ).Get();
728 int iovcnt = std::get<IovcntArg>( this->
args ).Get();
735 catch(
const std::exception& ex )
746 template<
bool HasHndl>
782 Buffer arg( std::get<BufferArg>( this->
args ).Get() );
789 catch(
const std::exception& ex )
800 template<
bool HasHndl>
837 template<
bool HasHndl>
839 Arg<std::string>, Arg<std::string>>
859 return "SetXAttrImpl";
875 std::string name = std::get<NameArg>( this->
args ).Get();
876 std::string value = std::get<ValueArg>( this->
args ).Get();
878 std::vector<xattr_t> attrs;
879 attrs.push_back(
xattr_t( std::move( name ), std::move( value ) ) );
890 catch(
const std::exception& ex )
918 template<
bool HasHndl>
920 Resp<std::vector<XAttrStatus>>, Arg<std::vector<xattr_t>>>
940 return "SetXAttrBulkImpl";
957 std::vector<xattr_t> attrs = std::get<AttrsArg>( this->
args ).Get();
964 catch(
const std::exception& ex )
992 template<
bool HasHndl>
1014 return "GetXAttrImpl";
1030 std::string name = std::get<NameArg>( this->
args ).Get();
1032 std::vector<std::string> attrs;
1033 attrs.push_back( std::move( name ) );
1044 catch(
const std::exception& ex )
1072 template<
bool HasHndl>
1074 Arg<std::vector<std::string>>>
1094 return "GetXAttrBulkImpl";
1111 std::vector<std::string> attrs = std::get<NamesArg>( this->
args ).Get();
1118 catch(
const std::exception& ex )
1146 template<
bool HasHndl>
1167 return "DelXAttrImpl";
1183 std::string name = std::get<NameArg>( this->
args ).Get();
1185 std::vector<std::string> attrs;
1186 attrs.push_back( std::move( name ) );
1197 catch(
const std::exception& ex )
1225 template<
bool HasHndl>
1227 Resp<std::vector<XAttrStatus>>, Arg<std::vector<std::string>>>
1247 return "DelXAttrBulkImpl";
1264 std::vector<std::string> attrs = std::get<NamesArg>( this->
args ).Get();
1271 catch(
const std::exception& ex )
1299 template<
bool HasHndl>
1301 Resp<std::vector<XAttr>>>
1315 return "ListXAttrImpl";
1353 #endif // __XRD_CL_FILE_OPERATIONS_HH__
Definition: XrdClOperationHandlers.hh:648
Write operation (.
Definition: XrdClFileOperations.hh:413
Handle an async response.
Definition: XrdClXRootDResponses.hh:975
const XRootDStatus & GetError() const
Definition: XrdClOperationHandlers.hh:399
SetXAttr bulk operation (.
Definition: XrdClFileOperations.hh:921
WriteVImpl< false > WriteV
Definition: XrdClFileOperations.hh:741
@ SizeArg
Definition: XrdClFileOperations.hh:425
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:444
std::string ToString()
Definition: XrdClFileOperations.hh:764
OpenImpl< false > Open
Definition: XrdClFileOperations.hh:239
CloseImpl< false > Close
Definition: XrdClFileOperations.hh:334
Access mode.
Definition: XrdClFileSystem.hh:117
Definition: XrdClFileOperations.hh:115
ResponseHandler * Create(std::function< void(XRootDStatus &, StatInfo &)> func)
Definition: XrdClFileOperations.hh:131
std::string ToString()
Definition: XrdClFileOperations.hh:430
File * file
The file object itself.
Definition: XrdClFileOperations.hh:97
std::string ToString()
Definition: XrdClFileOperations.hh:1165
@ SizeArg
Definition: XrdClFileOperations.hh:518
virtual ~FileOperation()
Destructor.
Definition: XrdClFileOperations.hh:87
@ NameArg
Definition: XrdClFileOperations.hh:852
@ OffsetArg
Definition: XrdClFileOperations.hh:259
GetXAttrImpl< false > GetXAttr(File *file, Arg< std::string > name)
Definition: XrdClFileOperations.hh:1055
@ NameArg
Definition: XrdClFileOperations.hh:1007
@ IovArg
Definition: XrdClFileOperations.hh:703
GetXAttr bulk operation (.
Definition: XrdClFileOperations.hh:1075
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:278
std::string ToString()
Definition: XrdClFileOperations.hh:523
OpenImpl< true > operator>>(Hdlr &&hdlr)
Definition: XrdClFileOperations.hh:197
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:220
Open operation (.
Definition: XrdClFileOperations.hh:106
VectorRead operation (.
Definition: XrdClFileOperations.hh:579
@ NamesArg
Definition: XrdClFileOperations.hh:1087
SetXAttr operation (.
Definition: XrdClFileOperations.hh:840
Stat operation (.
Definition: XrdClFileOperations.hh:341
GetXAttr operation (.
Definition: XrdClFileOperations.hh:995
XRootDStatus SetXAttr(const std::vector< xattr_t > &attrs, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus DelXAttr(const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0)
@ ChunksArg
Definition: XrdClFileOperations.hh:647
TruncateImpl< false > Truncate(File *file, Arg< uint64_t > size)
Definition: XrdClFileOperations.hh:559
std::string ToString()
Definition: XrdClFileOperations.hh:1092
Definition: XrdClArg.hh:286
std::unique_ptr< PipelineHandler > handler
Operation handler.
Definition: XrdClOperations.hh:288
WriteV operation (.
Definition: XrdClFileOperations.hh:691
A file.
Definition: XrdClFile.hh:45
Pipeline exception, wrapps an XRootDStatus.
Definition: XrdClOperationHandlers.hh:360
std::string ToString()
Definition: XrdClFileOperations.hh:1012
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:71
@ BufferArg
Definition: XrdClFileOperations.hh:759
friend class FileOperation
Definition: XrdClFileOperations.hh:47
OpenImpl(File *f, Arg< std::string > url, Arg< OpenFlags::Flags > flags, Arg< Access::Mode > mode=Access::None)
Constructor (.
Definition: XrdClFileOperations.hh:153
std::string ToString()
Definition: XrdClFileOperations.hh:264
std::string ToString()
Definition: XrdClFileOperations.hh:813
@ ForceArg
Definition: XrdClFileOperations.hh:352
Close operation (.
Definition: XrdClFileOperations.hh:304
FileOperation(File *f, Arguments... args)
Definition: XrdClFileOperations.hh:56
Mode
Access mode.
Definition: XrdClFileSystem.hh:122
std::tuple< Args... > args
Operation arguments.
Definition: XrdClOperations.hh:698
Truncate operation (.
Definition: XrdClFileOperations.hh:507
Definition: XrdClOperations.hh:476
std::string ToString()
Definition: XrdClFileOperations.hh:206
std::string ToString()
Definition: XrdClFileOperations.hh:857
std::string ToString()
Definition: XrdClFileOperations.hh:315
ExResp(XrdCl::File &file)
Definition: XrdClFileOperations.hh:121
XRootDStatus Sync(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Visa operation (.
Definition: XrdClFileOperations.hh:802
#define open
Definition: XrdPosix.hh:71
XRootDStatus GetXAttr(const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0)
Request status.
Definition: XrdClXRootDResponses.hh:215
FcntlImpl< false > Fcntl
Definition: XrdClFileOperations.hh:795
OpenImpl(File &f, Arg< std::string > url, Arg< OpenFlags::Flags > flags, Arg< Access::Mode > mode=Access::None)
Constructor (.
Definition: XrdClFileOperations.hh:163
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition: XrdClXRootDResponses.hh:904
OpenImpl(OpenImpl< from > &&open)
Definition: XrdClFileOperations.hh:178
std::string ToString()
Definition: XrdClFileOperations.hh:481
@ IovcntArg
Definition: XrdClFileOperations.hh:703
@ BufferArg
Definition: XrdClFileOperations.hh:591
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:329
ReadImpl< false > Read
Definition: XrdClFileOperations.hh:297
Read operation (.
Definition: XrdClFileOperations.hh:247
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:371
FileOperation(File &f, Arguments... args)
Definition: XrdClFileOperations.hh:66
VectorWrite operation (.
Definition: XrdClFileOperations.hh:636
XRootDStatus VectorRead(const ChunkList &chunks, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:495
XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Close(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Truncate(uint64_t size, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
std::string ToString()
Definition: XrdClFileOperations.hh:596
VisaImpl< false > Visa
Definition: XrdClFileOperations.hh:832
XRootDStatus ListXAttr(ResponseHandler *handler, uint16_t timeout=0)
SetXAttrImpl< false > SetXAttr(File *file, Arg< std::string > name, Arg< std::string > value)
Definition: XrdClFileOperations.hh:901
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:722
Definition: XrdClFileOperations.hh:45
@ ChunksArg
Definition: XrdClFileOperations.hh:591
Helper class for unpacking single XAttr from bulk response.
Definition: XrdClOperationHandlers.hh:77
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:1179
std::string ToString()
Definition: XrdClFileOperations.hh:938
std::string ToString()
Definition: XrdClFileOperations.hh:357
@ UrlArg
Definition: XrdClFileOperations.hh:188
StatImpl< false > Stat(File *file, Arg< bool > force)
Definition: XrdClFileOperations.hh:393
bool IsOK() const
We're fine.
Definition: XrdClStatus.hh:120
XRootDStatus Visa(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
@ AttrsArg
Definition: XrdClFileOperations.hh:933
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:778
VectorReadImpl< false > VectorRead
Definition: XrdClFileOperations.hh:628
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:1107
Lambda wrapper.
Definition: XrdClOperationHandlers.hh:317
WriteImpl< false > Write
Definition: XrdClFileOperations.hh:463
XRootDStatus VectorWrite(const ChunkList &chunks, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XrdCl::File & file
The underlying XrdCl::File object.
Definition: XrdClFileOperations.hh:145
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:953
Definition: XrdClAnyObject.hh:26
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:666
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:1026
DelXAttrImpl< false > DelXAttr(File *file, Arg< std::string > name)
Definition: XrdClFileOperations.hh:1208
Fcntl operation (.
Definition: XrdClFileOperations.hh:748
std::string ToString()
Definition: XrdClFileOperations.hh:1313
FileOperation(FileOperation< Derived, from, Response, Arguments... > &&op)
Definition: XrdClFileOperations.hh:78
std::string ToString()
Definition: XrdClFileOperations.hh:652
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:871
VectorWriteImpl< false > VectorWrite
Definition: XrdClFileOperations.hh:683
XRootDStatus WriteV(uint64_t offset, const struct iovec *iov, int iovcnt, ResponseHandler *handler, uint16_t timeout=0)
@ BufferArg
Definition: XrdClFileOperations.hh:425
XRootDStatus Stat(bool force, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
FinalizeHandler * make_finalized(ResponseHandler *handler)
Definition: XrdClOperationHandlers.hh:591
@ None
Definition: XrdClFileSystem.hh:123
Definition: XrdClArg.hh:224
DelXAttr bulk operation (.
Definition: XrdClFileOperations.hh:1228
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:1328
const uint16_t stError
An error occurred that could potentially be retried.
Definition: XrdClStatus.hh:32
Object stat info.
Definition: XrdClXRootDResponses.hh:396
Sync operation (.
Definition: XrdClFileOperations.hh:470
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:610
ListXAttrImpl< false > ListXAttr(File *file)
Definition: XrdClFileOperations.hh:1338
@ SizeArg
Definition: XrdClFileOperations.hh:259
Binary blob representation.
Definition: XrdClBuffer.hh:34
DelXAttr operation (.
Definition: XrdClFileOperations.hh:1149
SyncImpl< false > Sync
Definition: XrdClFileOperations.hh:500
ListXAttr bulk operation (.
Definition: XrdClFileOperations.hh:1302
std::string ToString()
Definition: XrdClFileOperations.hh:1245
Helper class for unpacking single XAttrStatus from bulk response.
Definition: XrdClOperationHandlers.hh:41
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:537
XRootDStatus Fcntl(const Buffer &arg, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
@ NameArg
Definition: XrdClFileOperations.hh:1160
@ BufferArg
Definition: XrdClFileOperations.hh:259
@ NamesArg
Definition: XrdClFileOperations.hh:1240
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:827
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
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:1260
@ ValueArg
Definition: XrdClFileOperations.hh:852
std::string ToString()
Definition: XrdClFileOperations.hh:708
@ OffsetArg
Definition: XrdClFileOperations.hh:703
@ OffsetArg
Definition: XrdClFileOperations.hh:425