Go to the documentation of this file.
26 #ifndef __XRD_CL_FILE_SYSTEM_OPERATIONS_HH__
27 #define __XRD_CL_FILE_SYSTEM_OPERATIONS_HH__
44 template<
template<
bool>
class Derived,
bool HasHndl,
typename Response,
typename ... Args>
58 false, Response, Args...>( std::move(
args )... ),
filesystem( std::move( fs ) )
93 template<
bool HasHndl>
129 std::string &path = std::get<PathArg>( this->args ).Get();
131 uint16_t timeout = pipelineTimeout < this->timeout ?
132 pipelineTimeout : this->timeout;
133 return this->filesystem->Locate( path, flags, handler, timeout );
141 template<
bool HasHndl>
143 Resp<LocationInfo>, Arg<std::string>, Arg<OpenFlags::Flags>>
177 std::string &path = std::get<PathArg>( this->
args ).Get();
179 uint16_t
timeout = pipelineTimeout < this->timeout ?
180 pipelineTimeout : this->
timeout;
189 template<
bool HasHndl>
225 std::string &source = std::get<SourceArg>( this->
args ).Get();
226 std::string &dest = std::get<DestArg>( this->
args ).Get();
227 uint16_t
timeout = pipelineTimeout < this->timeout ?
228 pipelineTimeout : this->
timeout;
237 template<
bool HasHndl>
239 Arg<QueryCode::Code>, Arg<Buffer>>
274 const Buffer &buffer( std::get<BufferArg>( this->
args ).Get() );
275 uint16_t
timeout = pipelineTimeout < this->timeout ?
276 pipelineTimeout : this->
timeout;
285 template<
bool HasHndl>
287 Arg<std::string>, Arg<uint64_t>>
321 std::string &path = std::get<PathArg>( this->
args ).Get();
322 uint64_t size = std::get<SizeArg>( this->
args ).Get();
323 uint16_t
timeout = pipelineTimeout < this->timeout ?
324 pipelineTimeout : this->
timeout;
338 template<
bool HasHndl>
372 std::string &path = std::get<PathArg>( this->
args ).Get();
373 uint16_t
timeout = pipelineTimeout < this->timeout ?
374 pipelineTimeout : this->
timeout;
383 template<
bool HasHndl>
385 Arg<std::string>, Arg<MkDirFlags::Flags>, Arg<Access::Mode>>
419 std::string &path = std::get<PathArg>( this->
args ).Get();
422 uint16_t
timeout = pipelineTimeout < this->timeout ?
423 pipelineTimeout : this->
timeout;
432 template<
bool HasHndl>
467 std::string &path = std::get<PathArg>( this->
args ).Get();
468 uint16_t
timeout = pipelineTimeout < this->timeout ?
469 pipelineTimeout : this->
timeout;
478 template<
bool HasHndl>
480 Arg<std::string>, Arg<Access::Mode>>
514 std::string &path = std::get<PathArg>( this->
args ).Get();
516 uint16_t
timeout = pipelineTimeout < this->timeout ?
517 pipelineTimeout : this->
timeout;
526 template<
bool HasHndl>
555 uint16_t
timeout = pipelineTimeout < this->timeout ?
556 pipelineTimeout : this->
timeout;
565 template<
bool HasHndl>
601 std::string &path = std::get<PathArg>( this->
args ).Get();
602 uint16_t
timeout = pipelineTimeout < this->timeout ?
603 pipelineTimeout : this->
timeout;
616 template<
bool HasHndl>
618 Resp<StatInfoVFS>, Arg<std::string>>
652 std::string &path = std::get<PathArg>( this->
args ).Get();
653 uint16_t
timeout = pipelineTimeout < this->timeout ?
654 pipelineTimeout : this->
timeout;
663 template<
bool HasHndl>
693 uint16_t
timeout = pipelineTimeout < this->timeout ?
694 pipelineTimeout : this->
timeout;
703 template<
bool HasHndl>
705 Arg<std::string>, Arg<DirListFlags::Flags>>
739 std::string &path = std::get<PathArg>( this->
args ).Get();
741 uint16_t
timeout = pipelineTimeout < this->timeout ?
742 pipelineTimeout : this->
timeout;
751 template<
bool HasHndl>
787 std::string &info = std::get<InfoArg>( this->
args ).Get();
788 uint16_t
timeout = pipelineTimeout < this->timeout ?
789 pipelineTimeout : this->
timeout;
798 template<
bool HasHndl>
800 Arg<std::vector<std::string>>, Arg<PrepareFlags::Flags>, Arg<uint8_t>>
834 std::vector<std::string> &fileList = std::get<FileListArg>( this->
args ).Get();
836 uint8_t priority = std::get<PriorityArg>( this->
args ).Get();
837 uint16_t
timeout = pipelineTimeout < this->timeout ?
838 pipelineTimeout : this->
timeout;
839 return this->
filesystem->Prepare( fileList, flags, priority,
848 template<
bool HasHndl>
850 Arg<std::string>, Arg<std::string>, Arg<std::string>>
870 return "SetXAttrFsImpl";
884 std::string &path = std::get<PathArg>( this->
args ).Get();
885 std::string &name = std::get<NameArg>( this->
args ).Get();
886 std::string &value = std::get<ValueArg>( this->
args ).Get();
888 std::vector<xattr_t> attrs;
889 attrs.push_back(
xattr_t( name, value ) );
892 uint16_t
timeout = pipelineTimeout < this->timeout ?
893 pipelineTimeout : this->
timeout;
895 if( !st.
IsOK() )
delete h;
908 std::move( value ) );
914 template<
bool HasHndl>
916 Resp<std::vector<XAttrStatus>>, Arg<std::string>, Arg<std::vector<xattr_t>>>
936 return "SetXAttrBulkImpl";
949 std::string &path = std::get<PathArg>( this->
args ).Get();
950 std::vector<xattr_t> &attrs = std::get<AttrsArg>( this->
args ).Get();
951 uint16_t
timeout = pipelineTimeout < this->timeout ?
952 pipelineTimeout : this->
timeout;
962 Arg<std::vector<xattr_t>> attrs )
970 template<
bool HasHndl>
972 Arg<std::string>, Arg<std::string>>
992 return "GetXAttrFsImpl";
1004 std::string &path = std::get<PathArg>( this->
args ).Get();
1005 std::string &name = std::get<NameArg>( this->
args ).Get();
1007 std::vector<std::string> attrs;
1008 attrs.push_back( name );
1011 uint16_t
timeout = pipelineTimeout < this->timeout ?
1012 pipelineTimeout : this->
timeout;
1014 if( !st.
IsOK() )
delete h;
1032 template<
bool HasHndl>
1034 Resp<std::vector<XAttr>>, Arg<std::string>, Arg<std::vector<std::string>>>
1054 return "GetXAttrFsBulkImpl";
1067 std::string &path = std::get<PathArg>( this->
args ).Get();
1068 std::vector<std::string> &attrs = std::get<NamesArg>( this->
args ).Get();
1069 uint16_t
timeout = pipelineTimeout < this->timeout ?
1070 pipelineTimeout : this->
timeout;
1080 Arg<std::vector<std::string>> attrs )
1088 template<
bool HasHndl>
1090 Arg<std::string>, Arg<std::string>>
1110 return "DelXAttrFsImpl";
1124 std::string &path = std::get<PathArg>( this->
args ).Get();
1125 std::string &name = std::get<NameArg>( this->
args ).Get();
1127 std::vector<std::string> attrs;
1128 attrs.push_back( name );
1131 uint16_t
timeout = pipelineTimeout < this->timeout ?
1132 pipelineTimeout : this->
timeout;
1134 if( !st.
IsOK() )
delete h;
1152 template<
bool HasHndl>
1154 Resp<std::vector<XAttrStatus>>, Arg<std::string>, Arg<std::vector<std::string>>>
1174 return "DelXAttrBulkImpl";
1189 std::string &path = std::get<PathArg>( this->
args ).Get();
1190 std::vector<std::string> &attrs = std::get<NamesArg>( this->
args ).Get();
1191 uint16_t
timeout = pipelineTimeout < this->timeout ?
1192 pipelineTimeout : this->
timeout;
1202 Arg<std::vector<std::string>> attrs )
1210 template<
bool HasHndl>
1212 Resp<std::vector<XAttr>>, Arg<std::string>>
1232 return "ListXAttrFsImpl";
1246 std::string &path = std::get<PathArg>( this->
args ).Get();
1247 uint16_t
timeout = pipelineTimeout < this->timeout ?
1248 pipelineTimeout : this->
timeout;
1263 #endif // __XRD_CL_FILE_SYSTEM_OPERATIONS_HH__
Locate operation (.
Definition: XrdClFileSystemOperations.hh:96
RmImpl< false > Rm
Definition: XrdClFileSystemOperations.hh:378
GetXAttrImpl< false > GetXAttr(Ctx< File > file, Arg< std::string > name)
Definition: XrdClFileOperations.hh:933
RmDirImpl< false > RmDir
Definition: XrdClFileSystemOperations.hh:473
@ PathArg
Definition: XrdClFileSystemOperations.hh:351
@ NameArg
Definition: XrdClFileSystemOperations.hh:1103
@ InfoArg
Definition: XrdClFileSystemOperations.hh:766
@ PathArg
Definition: XrdClFileSystemOperations.hh:1047
@ PathArg
Definition: XrdClFileSystemOperations.hh:718
SendInfoImpl< false > SendInfo
Definition: XrdClFileSystemOperations.hh:793
@ FlagsArg
Definition: XrdClFileSystemOperations.hh:398
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:319
StatVS operation (.
Definition: XrdClFileSystemOperations.hh:619
std::string ToString()
Definition: XrdClFileSystemOperations.hh:868
@ BufferArg
Definition: XrdClFileSystemOperations.hh:252
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:832
Protocol operation (.
Definition: XrdClFileSystemOperations.hh:666
LocateImpl< false > Locate
Definition: XrdClFileSystemOperations.hh:136
friend class FileSystemOperation
Definition: XrdClFileSystemOperations.hh:48
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:465
TruncateImpl< false > Truncate(Ctx< File > file, Arg< uint64_t > size)
Definition: XrdClFileOperations.hh:508
DelXAttr bulk operation (.
Definition: XrdClFileSystemOperations.hh:1155
MkDirImpl< false > MkDir
Definition: XrdClFileSystemOperations.hh:427
std::string ToString()
Definition: XrdClFileSystemOperations.hh:818
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:785
std::string ToString()
Definition: XrdClFileSystemOperations.hh:934
@ PathArg
Definition: XrdClFileSystemOperations.hh:1225
SetXAttrImpl< false > SetXAttr(Ctx< File > file, Arg< std::string > name, Arg< std::string > value)
Definition: XrdClFileOperations.hh:815
@ NamesArg
Definition: XrdClFileSystemOperations.hh:1167
Flags
Definition: XrdClFileSystem.hh:143
uint16_t timeout
Operation timeout.
Definition: XrdClOperations.hh:766
@ PathArg
Definition: XrdClFileSystemOperations.hh:446
DelXAttr operation (.
Definition: XrdClFileSystemOperations.hh:1091
@ FlagsArg
Definition: XrdClFileSystemOperations.hh:718
Utility class for storing a pointer to operation context.
Definition: XrdClCtx.hh:38
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:1244
@ NameArg
Definition: XrdClFileSystemOperations.hh:863
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:223
Definition: XrdClOperations.hh:59
@ PathArg
Definition: XrdClFileSystemOperations.hh:300
@ PathArg
Definition: XrdClFileSystemOperations.hh:985
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:271
std::string ToString()
Definition: XrdClFileSystemOperations.hh:1172
DelXAttrImpl< false > DelXAttr(Ctx< File > file, Arg< std::string > name)
Definition: XrdClFileOperations.hh:1050
std::string ToString()
Definition: XrdClFileSystemOperations.hh:305
Stat operation (.
Definition: XrdClFileSystemOperations.hh:568
std::string ToString()
Definition: XrdClFileSystemOperations.hh:161
Definition: XrdClArg.hh:295
std::unique_ptr< PipelineHandler > handler
Operation handler.
Definition: XrdClOperations.hh:304
FileSystemOperation(FileSystemOperation< Derived, from, Response, Args... > &&op)
Definition: XrdClFileSystemOperations.hh:70
@ NamesArg
Definition: XrdClFileSystemOperations.hh:1047
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:947
MvImpl< false > Mv
Definition: XrdClFileSystemOperations.hh:232
std::string ToString()
Definition: XrdClFileSystemOperations.hh:209
StatImpl< false > Stat(Ctx< File > file, Arg< bool > force, uint16_t timeout=0)
Definition: XrdClFileOperations.hh:358
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:127
Mode
Access mode.
Definition: XrdClFileSystem.hh:122
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:737
std::tuple< Args... > args
Operation arguments.
Definition: XrdClOperations.hh:761
Definition: XrdClOperations.hh:542
@ FileListArg
Definition: XrdClFileSystemOperations.hh:813
PingImpl< false > Ping
Definition: XrdClFileSystemOperations.hh:560
@ ModeArg
Definition: XrdClFileSystemOperations.hh:398
@ PathArg
Definition: XrdClFileSystemOperations.hh:580
std::string ToString()
Definition: XrdClFileSystemOperations.hh:1108
Code
XRootD query request codes.
Definition: XrdClFileSystem.hh:53
Request status.
Definition: XrdClXRootDResponses.hh:219
@ ValueArg
Definition: XrdClFileSystemOperations.hh:863
@ FlagsArg
Definition: XrdClFileSystemOperations.hh:156
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:1187
std::string ToString()
Definition: XrdClFileSystemOperations.hh:257
MkDir operation (.
Definition: XrdClFileSystemOperations.hh:386
DirListImpl< false > DirList
Definition: XrdClFileSystemOperations.hh:746
@ PathArg
Definition: XrdClFileSystemOperations.hh:398
@ PathArg
Definition: XrdClFileSystemOperations.hh:156
Ctx< FileSystem > filesystem
The file system object itself.
Definition: XrdClFileSystemOperations.hh:87
std::string ToString()
Definition: XrdClFileSystemOperations.hh:539
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:370
GetXAttr bulk operation (.
Definition: XrdClFileSystemOperations.hh:1035
ListXAttr bulk operation (.
Definition: XrdClFileSystemOperations.hh:1213
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:1002
std::string ToString()
Definition: XrdClFileSystemOperations.hh:1230
@ PathArg
Definition: XrdClFileSystemOperations.hh:631
Query operation (.
Definition: XrdClFileSystemOperations.hh:240
@ PathArg
Definition: XrdClFileSystemOperations.hh:863
DeepLocateImpl< false > DeepLocate
Definition: XrdClFileSystemOperations.hh:184
std::string ToString()
Definition: XrdClFileSystemOperations.hh:498
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:599
@ PriorityArg
Definition: XrdClFileSystemOperations.hh:813
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:417
SendInfo operation (.
Definition: XrdClFileSystemOperations.hh:754
Helper class for unpacking single XAttr from bulk response.
Definition: XrdClOperationHandlers.hh:77
std::string ToString()
Definition: XrdClFileSystemOperations.hh:585
ChModImpl< false > ChMod
Definition: XrdClFileSystemOperations.hh:521
std::string ToString()
Definition: XrdClFileSystemOperations.hh:771
QueryImpl< false > Query
Definition: XrdClFileSystemOperations.hh:280
bool IsOK() const
We're fine.
Definition: XrdClStatus.hh:122
StatVFSImpl< false > StatVFS
Definition: XrdClFileSystemOperations.hh:658
DirList operation (.
Definition: XrdClFileSystemOperations.hh:706
virtual ~FileSystemOperation()
Destructor.
Definition: XrdClFileSystemOperations.hh:78
GetXAttr operation (.
Definition: XrdClFileSystemOperations.hh:973
RmDir operation (.
Definition: XrdClFileSystemOperations.hh:435
ListXAttrImpl< false > ListXAttr(Ctx< File > file)
Definition: XrdClFileOperations.hh:1155
@ PathArg
Definition: XrdClFileSystemOperations.hh:493
Mv operation (.
Definition: XrdClFileSystemOperations.hh:192
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:175
@ FlagsArg
Definition: XrdClFileSystemOperations.hh:813
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:553
DeepLocate operation (.
Definition: XrdClFileSystemOperations.hh:144
@ NameArg
Definition: XrdClFileSystemOperations.hh:985
Definition: XrdClAnyObject.hh:26
Rm operation (.
Definition: XrdClFileSystemOperations.hh:340
PrepareImpl< false > Prepare
Definition: XrdClFileSystemOperations.hh:843
@ PathArg
Definition: XrdClFileSystemOperations.hh:1167
ProtocolImpl< false > Protocol
Definition: XrdClFileSystemOperations.hh:698
@ PathArg
Definition: XrdClFileSystemOperations.hh:108
ChMod operation (.
Definition: XrdClFileSystemOperations.hh:481
Definition: XrdClFileSystemOperations.hh:46
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:882
@ QueryCodeArg
Definition: XrdClFileSystemOperations.hh:252
Flags
Definition: XrdClFileSystem.hh:176
Definition: XrdClArg.hh:233
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:691
@ DestArg
Definition: XrdClFileSystemOperations.hh:204
Prepare operation (.
Definition: XrdClFileSystemOperations.hh:801
std::string ToString()
Definition: XrdClFileSystemOperations.hh:451
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:650
Flags
Definition: XrdClFileSystem.hh:156
SetXAttr operation (.
Definition: XrdClFileSystemOperations.hh:851
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:512
@ PathArg
Definition: XrdClFileSystemOperations.hh:1103
Truncate operation (.
Definition: XrdClFileSystemOperations.hh:288
@ AttrsArg
Definition: XrdClFileSystemOperations.hh:929
Binary blob representation.
Definition: XrdClBuffer.hh:34
Ping operation (.
Definition: XrdClFileSystemOperations.hh:528
std::string ToString()
Definition: XrdClFileSystemOperations.hh:677
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:1122
std::string ToString()
Definition: XrdClFileSystemOperations.hh:356
@ ModeArg
Definition: XrdClFileSystemOperations.hh:493
std::string ToString()
Definition: XrdClFileSystemOperations.hh:113
std::string ToString()
Definition: XrdClFileSystemOperations.hh:723
std::string ToString()
Definition: XrdClFileSystemOperations.hh:403
@ PathArg
Definition: XrdClFileSystemOperations.hh:929
Helper class for unpacking single XAttrStatus from bulk response.
Definition: XrdClOperationHandlers.hh:42
FileSystemOperation(Ctx< FileSystem > fs, Args... args)
Definition: XrdClFileSystemOperations.hh:57
@ SourceArg
Definition: XrdClFileSystemOperations.hh:204
@ SizeArg
Definition: XrdClFileSystemOperations.hh:300
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:1065
Flags
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:76
SetXAttr bulk operation (.
Definition: XrdClFileSystemOperations.hh:917
std::string ToString()
Definition: XrdClFileSystemOperations.hh:636
std::tuple< std::string, std::string > xattr_t
Extended attribute key - value pair.
Definition: XrdClXRootDResponses.hh:289
std::string ToString()
Definition: XrdClFileSystemOperations.hh:990
std::string ToString()
Definition: XrdClFileSystemOperations.hh:1052