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;
181 return this->
filesystem->DeepLocate( path, flags, handler, 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;
229 return this->
filesystem->Mv( source, dest, handler, 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;
277 return this->
filesystem->Query( queryCode, buffer, handler, 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;
325 return this->
filesystem->Truncate( path, size, handler, 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;
375 return this->
filesystem->Rm( path, handler, 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;
424 return this->
filesystem->MkDir( path, flags, mode, handler, 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;
470 return this->
filesystem->RmDir( path, handler, 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;
518 return this->
filesystem->ChMod( path, mode, handler, timeout );
526 template<
bool HasHndl>
555 uint16_t
timeout = pipelineTimeout < this->timeout ?
556 pipelineTimeout : this->
timeout;
557 return this->
filesystem->Ping( handler, 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;
604 return this->
filesystem->Stat( path, handler, 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;
655 return this->
filesystem->StatVFS( path, handler, timeout );
663 template<
bool HasHndl>
693 uint16_t
timeout = pipelineTimeout < this->timeout ?
694 pipelineTimeout : this->
timeout;
695 return this->
filesystem->Protocol( handler, 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;
743 return this->
filesystem->DirList( path, flags, handler, 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;
790 return this->
filesystem->SendInfo( info, handler, 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;
953 return this->
filesystem->SetXAttr( path, attrs, handler, 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;
1071 return this->
filesystem->GetXAttr( path, attrs, handler, 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;
1193 return this->
filesystem->DelXAttr( path, attrs, handler, 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;
1249 return this->
filesystem->ListXAttr( path, handler, timeout );
1263 #endif // __XRD_CL_FILE_SYSTEM_OPERATIONS_HH__
ProtocolImpl< false > Protocol
Definition: XrdClFileSystemOperations.hh:698
std::string ToString()
Definition: XrdClFileSystemOperations.hh:934
ListXAttrImpl< false > ListXAttr(Ctx< File > file)
Definition: XrdClFileOperations.hh:1361
friend class FileSystemOperation
Definition: XrdClFileSystemOperations.hh:48
SendInfoImpl< false > SendInfo
Definition: XrdClFileSystemOperations.hh:793
Protocol operation (.
Definition: XrdClFileSystemOperations.hh:664
Definition: XrdClFileSystemOperations.hh:351
std::string ToString()
Definition: XrdClFileSystemOperations.hh:636
Definition: XrdClFileSystemOperations.hh:1167
std::string ToString()
Definition: XrdClFileSystemOperations.hh:1052
SetXAttrImpl< false > SetXAttr(Ctx< File > file, Arg< std::string > name, Arg< std::string > value)
Definition: XrdClFileOperations.hh:1021
MvImpl< false > Mv
Definition: XrdClFileSystemOperations.hh:232
std::string ToString()
Definition: XrdClFileSystemOperations.hh:451
QueryImpl< false > Query
Definition: XrdClFileSystemOperations.hh:280
std::string ToString()
Definition: XrdClFileSystemOperations.hh:305
Utility class for storing a pointer to operation context.
Definition: XrdClCtx.hh:37
StatVFSImpl< false > StatVFS
Definition: XrdClFileSystemOperations.hh:658
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:832
FileSystemOperation(FileSystemOperation< Derived, from, Response, Args...> &&op)
Definition: XrdClFileSystemOperations.hh:70
Definition: XrdClFileSystemOperations.hh:108
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:417
Definition: XrdClFileSystemOperations.hh:863
GetXAttr operation (.
Definition: XrdClFileSystemOperations.hh:971
std::string ToString()
Definition: XrdClFileSystemOperations.hh:161
Definition: XrdClFileSystemOperations.hh:718
Definition: XrdClFileSystemOperations.hh:718
Definition: XrdClFileSystemOperations.hh:45
Definition: XrdClFileSystemOperations.hh:863
std::string ToString()
Definition: XrdClFileSystemOperations.hh:990
Definition: XrdClFileSystemOperations.hh:300
Definition: XrdClFileSystemOperations.hh:985
FileSystemOperation(Ctx< FileSystem > fs, Args...args)
Definition: XrdClFileSystemOperations.hh:57
Definition: XrdClFileSystemOperations.hh:300
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:599
Definition: XrdClFileSystemOperations.hh:493
SetXAttr bulk operation (.
Definition: XrdClFileSystemOperations.hh:915
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:370
std::string ToString()
Definition: XrdClFileSystemOperations.hh:818
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:1187
Stat operation (.
Definition: XrdClFileSystemOperations.hh:566
uint16_t timeout
Operation timeout.
Definition: XrdClOperations.hh:766
DelXAttrImpl< false > DelXAttr(Ctx< File > file, Arg< std::string > name)
Definition: XrdClFileOperations.hh:1256
std::string ToString()
Definition: XrdClFileSystemOperations.hh:1108
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:947
LocateImpl< false > Locate
Definition: XrdClFileSystemOperations.hh:136
std::string ToString()
Definition: XrdClFileSystemOperations.hh:868
ListXAttr bulk operation (.
Definition: XrdClFileSystemOperations.hh:1211
std::string ToString()
Definition: XrdClFileSystemOperations.hh:539
Definition: XrdClFileSystemOperations.hh:493
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:785
SetXAttr operation (.
Definition: XrdClFileSystemOperations.hh:849
Flags
Definition: XrdClFileSystem.hh:175
MkDir operation (.
Definition: XrdClFileSystemOperations.hh:384
Definition: XrdClFileSystemOperations.hh:252
Prepare operation (.
Definition: XrdClFileSystemOperations.hh:799
DelXAttr bulk operation (.
Definition: XrdClFileSystemOperations.hh:1153
GetXAttrImpl< false > GetXAttr(Ctx< File > file, Arg< std::string > name)
Definition: XrdClFileOperations.hh:1139
std::string ToString()
Definition: XrdClFileSystemOperations.hh:257
Ping operation (.
Definition: XrdClFileSystemOperations.hh:527
RmImpl< false > Rm
Definition: XrdClFileSystemOperations.hh:378
MkDirImpl< false > MkDir
Definition: XrdClFileSystemOperations.hh:427
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:465
Query operation (.
Definition: XrdClFileSystemOperations.hh:238
Definition: XrdClFileSystemOperations.hh:813
Definition: XrdClFileSystemOperations.hh:156
Definition: XrdClFileSystemOperations.hh:1167
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:512
Definition: XrdClFileSystemOperations.hh:1047
std::string ToString()
Definition: XrdClFileSystemOperations.hh:403
Definition: XrdClFileSystemOperations.hh:580
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:127
Definition: XrdClFileSystemOperations.hh:985
std::string ToString()
Definition: XrdClFileSystemOperations.hh:1230
Flags
Definition: XrdClFileSystem.hh:142
Ctx< FileSystem > filesystem
The file system object itself.
Definition: XrdClFileSystemOperations.hh:87
Truncate operation (.
Definition: XrdClFileSystemOperations.hh:286
Helper class for unpacking single XAttr from bulk response.
Definition: XrdClOperationHandlers.hh:76
std::tuple< Args...> args
Operation arguments.
Definition: XrdClOperations.hh:761
Definition: XrdClFileSystemOperations.hh:446
std::string ToString()
Definition: XrdClFileSystemOperations.hh:356
Definition: XrdClArg.hh:232
Definition: XrdClFileSystemOperations.hh:766
Definition: XrdClArg.hh:294
DirListImpl< false > DirList
Definition: XrdClFileSystemOperations.hh:746
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:650
RmDir operation (.
Definition: XrdClFileSystemOperations.hh:433
Request status.
Definition: XrdClXRootDResponses.hh:218
StatVS operation (.
Definition: XrdClFileSystemOperations.hh:617
std::string ToString()
Definition: XrdClFileSystemOperations.hh:585
Definition: XrdClFileSystemOperations.hh:1103
StatImpl< false > Stat(Ctx< File > file, Arg< bool > force, uint16_t timeout=0)
Definition: XrdClFileOperations.hh:535
virtual ~FileSystemOperation()
Destructor.
Definition: XrdClFileSystemOperations.hh:78
TruncateImpl< false > Truncate(Ctx< File > file, Arg< uint64_t > size, uint16_t timeout)
Definition: XrdClFileOperations.hh:692
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:882
Definition: XrdClOperations.hh:58
ChMod operation (.
Definition: XrdClFileSystemOperations.hh:479
Definition: XrdClFileSystemOperations.hh:204
Definition: XrdClFileSystemOperations.hh:813
DelXAttr operation (.
Definition: XrdClFileSystemOperations.hh:1089
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:1002
Definition: XrdClFileSystemOperations.hh:929
std::string ToString()
Definition: XrdClFileSystemOperations.hh:723
Definition: XrdClFileSystemOperations.hh:398
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:1065
std::string ToString()
Definition: XrdClFileSystemOperations.hh:498
Mv operation (.
Definition: XrdClFileSystemOperations.hh:190
Definition: XrdClFileSystemOperations.hh:1103
Helper class for unpacking single XAttrStatus from bulk response.
Definition: XrdClOperationHandlers.hh:41
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:175
Definition: XrdClFileSystemOperations.hh:204
Code
XRootD query request codes.
Definition: XrdClFileSystem.hh:52
Definition: XrdClFileSystemOperations.hh:398
Definition: XrdClFileSystemOperations.hh:1225
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:553
GetXAttr bulk operation (.
Definition: XrdClFileSystemOperations.hh:1033
Rm operation (.
Definition: XrdClFileSystemOperations.hh:339
Flags
Definition: XrdClFileSystem.hh:155
std::string ToString()
Definition: XrdClFileSystemOperations.hh:771
ChModImpl< false > ChMod
Definition: XrdClFileSystemOperations.hh:521
Mode
Access mode.
Definition: XrdClFileSystem.hh:121
SendInfo operation (.
Definition: XrdClFileSystemOperations.hh:752
Definition: XrdClFileSystemOperations.hh:929
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:1122
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:737
PingImpl< false > Ping
Definition: XrdClFileSystemOperations.hh:560
Definition: XrdClFileSystemOperations.hh:398
DeepLocateImpl< false > DeepLocate
Definition: XrdClFileSystemOperations.hh:184
Definition: XrdClFileSystemOperations.hh:252
std::string ToString()
Definition: XrdClFileSystemOperations.hh:1172
std::string ToString()
Definition: XrdClFileSystemOperations.hh:209
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:223
Definition: XrdClFileSystemOperations.hh:156
std::string ToString()
Definition: XrdClFileSystemOperations.hh:113
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:271
Definition: XrdClFileSystemOperations.hh:1047
Definition: XrdClFileSystemOperations.hh:631
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:289
bool IsOK() const
We're fine.
Definition: XrdClStatus.hh:123
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:319
PrepareImpl< false > Prepare
Definition: XrdClFileSystemOperations.hh:843
Locate operation (.
Definition: XrdClFileSystemOperations.hh:94
std::string ToString()
Definition: XrdClFileSystemOperations.hh:677
std::unique_ptr< PipelineHandler > handler
Operation handler.
Definition: XrdClOperations.hh:304
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:1244
RmDirImpl< false > RmDir
Definition: XrdClFileSystemOperations.hh:473
Definition: XrdClFileSystemOperations.hh:813
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileSystemOperations.hh:691
Binary blob representation.
Definition: XrdClBuffer.hh:33
Definition: XrdClOperations.hh:541
DirList operation (.
Definition: XrdClFileSystemOperations.hh:704
Definition: XrdClFileSystemOperations.hh:863
DeepLocate operation (.
Definition: XrdClFileSystemOperations.hh:142