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 ) ) );
883 if( !st.IsOK() )
delete handler;
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 ) );
1037 if( !st.IsOK() )
delete handler;
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 ) );
1190 if( !st.IsOK() )
delete handler;
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__
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:278
std::string ToString()
Definition: XrdClFileOperations.hh:708
CloseImpl< false > Close
Definition: XrdClFileOperations.hh:334
GetXAttrImpl< false > GetXAttr(File *file, Arg< std::string > name)
Definition: XrdClFileOperations.hh:1055
std::string ToString()
Definition: XrdClFileOperations.hh:857
FileOperation(FileOperation< Derived, from, Response, Arguments...> &&op)
Definition: XrdClFileOperations.hh:78
Close operation (.
Definition: XrdClFileOperations.hh:303
XrdCl::File & file
The underlying XrdCl::File object.
Definition: XrdClFileOperations.hh:145
XRootDStatus VectorRead(const ChunkList &chunks, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus WriteV(uint64_t offset, const struct iovec *iov, int iovcnt, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:871
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition: XrdClXRootDResponses.hh:904
XRootDStatus GetXAttr(const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:329
VectorReadImpl< false > VectorRead
Definition: XrdClFileOperations.hh:628
Definition: XrdClFileOperations.hh:703
VectorRead operation (.
Definition: XrdClFileOperations.hh:577
XRootDStatus SetXAttr(const std::vector< xattr_t > &attrs, ResponseHandler *handler, uint16_t timeout=0)
FcntlImpl< false > Fcntl
Definition: XrdClFileOperations.hh:795
std::string ToString()
Definition: XrdClFileOperations.hh:938
Object stat info.
Definition: XrdClXRootDResponses.hh:395
XRootDStatus ListXAttr(ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:444
std::string ToString()
Definition: XrdClFileOperations.hh:315
Definition: XrdClFileOperations.hh:518
std::string ToString()
Definition: XrdClFileOperations.hh:206
XRootDStatus Sync(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Definition: XrdClFileOperations.hh:259
std::string ToString()
Definition: XrdClFileOperations.hh:1245
Definition: XrdClFileOperations.hh:933
Definition: XrdClFileOperations.hh:425
DelXAttr bulk operation (.
Definition: XrdClFileOperations.hh:1226
Definition: XrdClFileOperations.hh:703
VectorWrite operation (.
Definition: XrdClFileOperations.hh:634
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:1179
XRootDStatus Write(uint64_t offset, uint32_t size, const void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Fcntl operation (.
Definition: XrdClFileOperations.hh:747
SyncImpl< false > Sync
Definition: XrdClFileOperations.hh:500
SetXAttr operation (.
Definition: XrdClFileOperations.hh:838
std::string ToString()
Definition: XrdClFileOperations.hh:430
Definition: XrdClFileOperations.hh:1160
Visa operation (.
Definition: XrdClFileOperations.hh:801
Definition: XrdClFileOperations.hh:1240
std::string ToString()
Definition: XrdClFileOperations.hh:523
Access mode.
Definition: XrdClFileSystem.hh:116
GetXAttr operation (.
Definition: XrdClFileOperations.hh:993
std::string ToString()
Definition: XrdClFileOperations.hh:481
Read operation (.
Definition: XrdClFileOperations.hh:245
std::string ToString()
Definition: XrdClFileOperations.hh:652
std::string ToString()
Definition: XrdClFileOperations.hh:764
Definition: XrdClFileOperations.hh:852
Definition: XrdClFileOperations.hh:425
XRootDStatus Visa(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
WriteImpl< false > Write
Definition: XrdClFileOperations.hh:463
Definition: XrdClFileOperations.hh:425
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:778
std::string ToString()
Definition: XrdClFileOperations.hh:264
Definition: XrdClFileOperations.hh:703
Definition: XrdClFileOperations.hh:188
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:1107
OpenImpl< true > operator>>(Hdlr &&hdlr)
Definition: XrdClFileOperations.hh:197
const XRootDStatus & GetError() const
Definition: XrdClOperationHandlers.hh:399
std::string ToString()
Definition: XrdClFileOperations.hh:1313
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:220
Definition: XrdClFileOperations.hh:352
VectorWriteImpl< false > VectorWrite
Definition: XrdClFileOperations.hh:683
ListXAttr bulk operation (.
Definition: XrdClFileOperations.hh:1300
std::string ToString()
Definition: XrdClFileOperations.hh:813
Definition: XrdClOperationHandlers.hh:647
FileOperation(File &f, Arguments...args)
Definition: XrdClFileOperations.hh:66
Truncate operation (.
Definition: XrdClFileOperations.hh:506
WriteV operation (.
Definition: XrdClFileOperations.hh:689
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:70
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:495
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:1026
FileOperation(File *f, Arguments...args)
Definition: XrdClFileOperations.hh:56
Definition: XrdClFileOperations.hh:591
XRootDStatus Read(uint64_t offset, uint32_t size, void *buffer, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Pipeline exception, wrapps an XRootDStatus.
Definition: XrdClOperationHandlers.hh:359
std::string ToString()
Definition: XrdClFileOperations.hh:357
A file.
Definition: XrdClFile.hh:44
Definition: XrdClFileOperations.hh:1007
File * file
The file object itself.
Definition: XrdClFileOperations.hh:97
OpenImpl(File *f, Arg< std::string > url, Arg< OpenFlags::Flags > flags, Arg< Access::Mode > mode=Access::None)
Constructor (.
Definition: XrdClFileOperations.hh:153
XRootDStatus Close(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
virtual ~FileOperation()
Destructor.
Definition: XrdClFileOperations.hh:87
SetXAttr bulk operation (.
Definition: XrdClFileOperations.hh:919
Helper class for unpacking single XAttr from bulk response.
Definition: XrdClOperationHandlers.hh:76
std::tuple< Args...> args
Operation arguments.
Definition: XrdClOperations.hh:698
Definition: XrdClArg.hh:223
Definition: XrdClFileOperations.hh:114
Definition: XrdClArg.hh:285
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:1260
StatImpl< false > Stat(File *file, Arg< bool > force)
Definition: XrdClFileOperations.hh:393
ReadImpl< false > Read
Definition: XrdClFileOperations.hh:297
Stat operation (.
Definition: XrdClFileOperations.hh:340
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:371
const uint16_t stError
An error occurred that could potentially be retried.
Definition: XrdClStatus.hh:32
Request status.
Definition: XrdClXRootDResponses.hh:214
Definition: XrdClFileOperations.hh:852
GetXAttr bulk operation (.
Definition: XrdClFileOperations.hh:1073
Definition: XrdClFileOperations.hh:1087
Sync operation (.
Definition: XrdClFileOperations.hh:469
OpenImpl(File &f, Arg< std::string > url, Arg< OpenFlags::Flags > flags, Arg< Access::Mode > mode=Access::None)
Constructor (.
Definition: XrdClFileOperations.hh:163
std::string ToString()
Definition: XrdClFileOperations.hh:1012
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:722
Lambda wrapper.
Definition: XrdClOperationHandlers.hh:316
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:1328
OpenImpl(OpenImpl< from > &&open)
Definition: XrdClFileOperations.hh:178
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:666
Definition: XrdClFileOperations.hh:44
XRootDStatus Truncate(uint64_t size, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus VectorWrite(const ChunkList &chunks, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Definition: XrdClFileOperations.hh:647
Handle an async response.
Definition: XrdClXRootDResponses.hh:974
Definition: XrdClFileSystem.hh:123
Helper class for unpacking single XAttrStatus from bulk response.
Definition: XrdClOperationHandlers.hh:40
std::string ToString()
Definition: XrdClFileOperations.hh:596
XRootDStatus DelXAttr(const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0)
OpenImpl< false > Open
Definition: XrdClFileOperations.hh:239
friend class FileOperation
Definition: XrdClFileOperations.hh:47
ResponseHandler * Create(std::function< void(XRootDStatus &, StatInfo &)> func)
Definition: XrdClFileOperations.hh:131
Open operation (.
Definition: XrdClFileOperations.hh:104
FinalizeHandler * make_finalized(ResponseHandler *handler)
Definition: XrdClOperationHandlers.hh:591
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:953
XRootDStatus Stat(bool force, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:827
Definition: XrdClFileOperations.hh:591
WriteVImpl< false > WriteV
Definition: XrdClFileOperations.hh:741
Mode
Access mode.
Definition: XrdClFileSystem.hh:121
ListXAttrImpl< false > ListXAttr(File *file)
Definition: XrdClFileOperations.hh:1338
std::string ToString()
Definition: XrdClFileOperations.hh:1165
#define open
Definition: XrdPosix.hh:71
DelXAttrImpl< false > DelXAttr(File *file, Arg< std::string > name)
Definition: XrdClFileOperations.hh:1208
Definition: XrdClFileOperations.hh:759
VisaImpl< false > Visa
Definition: XrdClFileOperations.hh:832
SetXAttrImpl< false > SetXAttr(File *file, Arg< std::string > name, Arg< std::string > value)
Definition: XrdClFileOperations.hh:901
ExResp(XrdCl::File &file)
Definition: XrdClFileOperations.hh:121
Flags
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:75
std::tuple< std::string, std::string > xattr_t
Extended attribute key - value pair.
Definition: XrdClXRootDResponses.hh:285
Definition: XrdClFileOperations.hh:259
TruncateImpl< false > Truncate(File *file, Arg< uint64_t > size)
Definition: XrdClFileOperations.hh:559
Definition: XrdClFileOperations.hh:259
Write operation (.
Definition: XrdClFileOperations.hh:411
std::string ToString()
Definition: XrdClFileOperations.hh:1092
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:610
XRootDStatus RunImpl()
Definition: XrdClFileOperations.hh:537
std::unique_ptr< PipelineHandler > handler
Operation handler.
Definition: XrdClOperations.hh:288
XRootDStatus Fcntl(const Buffer &arg, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
Binary blob representation.
Definition: XrdClBuffer.hh:33
DelXAttr operation (.
Definition: XrdClFileOperations.hh:1147
Definition: XrdClOperations.hh:475