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>
93 template<
bool HasHndl>
108 enum { PathArg, FlagsArg };
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;
Definition XrdClArg.hh:234
Binary blob representation.
Definition XrdClBuffer.hh:34
ChMod operation (.
Definition XrdClFileSystemOperations.hh:481
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:512
@ PathArg
Definition XrdClFileSystemOperations.hh:493
@ ModeArg
Definition XrdClFileSystemOperations.hh:493
std::string ToString()
Definition XrdClFileSystemOperations.hh:498
Definition XrdClOperations.hh:552
std::tuple< Args... > args
Operation arguments.
Definition XrdClOperations.hh:771
uint16_t timeout
Operation timeout.
Definition XrdClOperations.hh:776
DeepLocate operation (.
Definition XrdClFileSystemOperations.hh:144
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:175
std::string ToString()
Definition XrdClFileSystemOperations.hh:161
@ PathArg
Definition XrdClFileSystemOperations.hh:156
@ FlagsArg
Definition XrdClFileSystemOperations.hh:156
DelXAttr bulk operation (.
Definition XrdClFileSystemOperations.hh:1155
@ NamesArg
Definition XrdClFileSystemOperations.hh:1167
@ PathArg
Definition XrdClFileSystemOperations.hh:1167
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:1187
std::string ToString()
Definition XrdClFileSystemOperations.hh:1172
DelXAttr operation (.
Definition XrdClFileSystemOperations.hh:1091
std::string ToString()
Definition XrdClFileSystemOperations.hh:1108
@ NameArg
Definition XrdClFileSystemOperations.hh:1103
@ PathArg
Definition XrdClFileSystemOperations.hh:1103
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:1122
DirList operation (.
Definition XrdClFileSystemOperations.hh:706
@ FlagsArg
Definition XrdClFileSystemOperations.hh:718
@ PathArg
Definition XrdClFileSystemOperations.hh:718
std::string ToString()
Definition XrdClFileSystemOperations.hh:723
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:737
Definition XrdClFileSystemOperations.hh:46
Ctx< FileSystem > filesystem
The file system object itself.
Definition XrdClFileSystemOperations.hh:87
virtual ~FileSystemOperation()
Destructor.
Definition XrdClFileSystemOperations.hh:78
FileSystemOperation(FileSystemOperation< Derived, from, Response, Args... > &&op)
Definition XrdClFileSystemOperations.hh:70
FileSystemOperation(Ctx< FileSystem > fs, Args... args)
Definition XrdClFileSystemOperations.hh:57
friend class FileSystemOperation
Definition XrdClFileSystemOperations.hh:48
GetXAttr bulk operation (.
Definition XrdClFileSystemOperations.hh:1035
@ PathArg
Definition XrdClFileSystemOperations.hh:1047
@ NamesArg
Definition XrdClFileSystemOperations.hh:1047
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:1065
std::string ToString()
Definition XrdClFileSystemOperations.hh:1052
GetXAttr operation (.
Definition XrdClFileSystemOperations.hh:973
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:1002
@ NameArg
Definition XrdClFileSystemOperations.hh:985
@ PathArg
Definition XrdClFileSystemOperations.hh:985
std::string ToString()
Definition XrdClFileSystemOperations.hh:990
ListXAttr bulk operation (.
Definition XrdClFileSystemOperations.hh:1213
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:1244
@ PathArg
Definition XrdClFileSystemOperations.hh:1225
std::string ToString()
Definition XrdClFileSystemOperations.hh:1230
Locate operation (.
Definition XrdClFileSystemOperations.hh:96
std::string ToString()
Definition XrdClFileSystemOperations.hh:113
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:127
MkDir operation (.
Definition XrdClFileSystemOperations.hh:386
std::string ToString()
Definition XrdClFileSystemOperations.hh:403
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:417
@ FlagsArg
Definition XrdClFileSystemOperations.hh:398
@ ModeArg
Definition XrdClFileSystemOperations.hh:398
@ PathArg
Definition XrdClFileSystemOperations.hh:398
Mv operation (.
Definition XrdClFileSystemOperations.hh:192
@ SourceArg
Definition XrdClFileSystemOperations.hh:204
@ DestArg
Definition XrdClFileSystemOperations.hh:204
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:223
std::string ToString()
Definition XrdClFileSystemOperations.hh:209
std::unique_ptr< PipelineHandler > handler
Operation handler.
Definition XrdClOperations.hh:309
Ping operation (.
Definition XrdClFileSystemOperations.hh:528
std::string ToString()
Definition XrdClFileSystemOperations.hh:539
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:553
Definition XrdClOperations.hh:64
Prepare operation (.
Definition XrdClFileSystemOperations.hh:801
@ PriorityArg
Definition XrdClFileSystemOperations.hh:813
@ FlagsArg
Definition XrdClFileSystemOperations.hh:813
@ FileListArg
Definition XrdClFileSystemOperations.hh:813
std::string ToString()
Definition XrdClFileSystemOperations.hh:818
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:832
Protocol operation (.
Definition XrdClFileSystemOperations.hh:666
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:691
std::string ToString()
Definition XrdClFileSystemOperations.hh:677
Query operation (.
Definition XrdClFileSystemOperations.hh:240
@ BufferArg
Definition XrdClFileSystemOperations.hh:252
@ QueryCodeArg
Definition XrdClFileSystemOperations.hh:252
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:271
std::string ToString()
Definition XrdClFileSystemOperations.hh:257
RmDir operation (.
Definition XrdClFileSystemOperations.hh:435
std::string ToString()
Definition XrdClFileSystemOperations.hh:451
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:465
@ PathArg
Definition XrdClFileSystemOperations.hh:446
Rm operation (.
Definition XrdClFileSystemOperations.hh:340
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:370
@ PathArg
Definition XrdClFileSystemOperations.hh:351
std::string ToString()
Definition XrdClFileSystemOperations.hh:356
SendInfo operation (.
Definition XrdClFileSystemOperations.hh:754
std::string ToString()
Definition XrdClFileSystemOperations.hh:771
@ InfoArg
Definition XrdClFileSystemOperations.hh:766
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:785
SetXAttr bulk operation (.
Definition XrdClFileSystemOperations.hh:917
@ AttrsArg
Definition XrdClFileSystemOperations.hh:929
@ PathArg
Definition XrdClFileSystemOperations.hh:929
std::string ToString()
Definition XrdClFileSystemOperations.hh:934
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:947
SetXAttr operation (.
Definition XrdClFileSystemOperations.hh:851
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:882
std::string ToString()
Definition XrdClFileSystemOperations.hh:868
@ PathArg
Definition XrdClFileSystemOperations.hh:863
@ ValueArg
Definition XrdClFileSystemOperations.hh:863
@ NameArg
Definition XrdClFileSystemOperations.hh:863
Stat operation (.
Definition XrdClFileSystemOperations.hh:568
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:599
@ PathArg
Definition XrdClFileSystemOperations.hh:580
std::string ToString()
Definition XrdClFileSystemOperations.hh:585
StatVS operation (.
Definition XrdClFileSystemOperations.hh:619
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:650
@ PathArg
Definition XrdClFileSystemOperations.hh:631
std::string ToString()
Definition XrdClFileSystemOperations.hh:636
Truncate operation (.
Definition XrdClFileSystemOperations.hh:288
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition XrdClFileSystemOperations.hh:319
@ SizeArg
Definition XrdClFileSystemOperations.hh:300
@ PathArg
Definition XrdClFileSystemOperations.hh:300
std::string ToString()
Definition XrdClFileSystemOperations.hh:305
Helper class for unpacking single XAttrStatus from bulk response.
Definition XrdClOperationHandlers.hh:42
Helper class for unpacking single XAttr from bulk response.
Definition XrdClOperationHandlers.hh:77
Request status.
Definition XrdClXRootDResponses.hh:219
Definition XrdClAction.hh:34
GetXAttrImpl< false > GetXAttr(Ctx< File > file, Arg< std::string > name)
Definition XrdClFileOperations.hh:1139
SendInfoImpl< false > SendInfo
Definition XrdClFileSystemOperations.hh:793
ChModImpl< false > ChMod
Definition XrdClFileSystemOperations.hh:521
MkDirImpl< false > MkDir
Definition XrdClFileSystemOperations.hh:427
RmImpl< false > Rm
Definition XrdClFileSystemOperations.hh:378
StatImpl< false > Stat(Ctx< File > file, Arg< bool > force, uint16_t timeout=0)
Definition XrdClFileOperations.hh:535
MvImpl< false > Mv
Definition XrdClFileSystemOperations.hh:232
LocateImpl< false > Locate
Definition XrdClFileSystemOperations.hh:136
DelXAttrImpl< false > DelXAttr(Ctx< File > file, Arg< std::string > name)
Definition XrdClFileOperations.hh:1256
TruncateImpl< false > Truncate(Ctx< File > file, Arg< uint64_t > size, uint16_t timeout)
Definition XrdClFileOperations.hh:692
DeepLocateImpl< false > DeepLocate
Definition XrdClFileSystemOperations.hh:184
SetXAttrImpl< false > SetXAttr(Ctx< File > file, Arg< std::string > name, Arg< std::string > value)
Definition XrdClFileOperations.hh:1021
ProtocolImpl< false > Protocol
Definition XrdClFileSystemOperations.hh:698
ListXAttrImpl< false > ListXAttr(Ctx< File > file)
Definition XrdClFileOperations.hh:1361
std::tuple< std::string, std::string > xattr_t
Extended attribute key - value pair.
Definition XrdClXRootDResponses.hh:289
RmDirImpl< false > RmDir
Definition XrdClFileSystemOperations.hh:473
PrepareImpl< false > Prepare
Definition XrdClFileSystemOperations.hh:843
StatVFSImpl< false > StatVFS
Definition XrdClFileSystemOperations.hh:658
PingImpl< false > Ping
Definition XrdClFileSystemOperations.hh:560
DirListImpl< false > DirList
Definition XrdClFileSystemOperations.hh:746
QueryImpl< false > Query
Definition XrdClFileSystemOperations.hh:280
Definition XrdOucJson.hh:4517
Mode
Access mode.
Definition XrdClFileSystem.hh:122
Utility class for storing a pointer to operation context.
Definition XrdClCtx.hh:39
Flags
Definition XrdClFileSystem.hh:156
Flags
Definition XrdClFileSystem.hh:143
Flags
Open flags, may be or'd when appropriate.
Definition XrdClFileSystem.hh:76
Flags
Definition XrdClFileSystem.hh:176
Code
XRootD query request codes.
Definition XrdClFileSystem.hh:53
Definition XrdClOperationHandlers.hh:662
bool IsOK() const
We're fine.
Definition XrdClStatus.hh:124