26 #ifndef __XRD_CL_FILE_SYSTEM_OPERATIONS_HH__
27 #define __XRD_CL_FILE_SYSTEM_OPERATIONS_HH__
43 template<
template<
bool>
class Derived,
bool HasHndl,
typename Response,
typename ... Args>
102 template<
bool HasHndl>
117 enum { PathArg, FlagsArg };
140 std::string path = std::get<PathArg>( this->args ).Get();
142 return this->filesystem->Locate( path, flags, this->handler.get() );
148 catch(
const std::exception& ex )
159 template<
bool HasHndl>
161 Resp<LocationInfo>, Arg<std::string>, Arg<OpenFlags::Flags>>
197 std::string path = std::get<PathArg>( this->
args ).Get();
205 catch(
const std::exception& ex )
216 template<
bool HasHndl>
254 std::string source = std::get<SourceArg>( this->
args ).Get();
255 std::string dest = std::get<DestArg>( this->
args ).Get();
262 catch(
const std::exception& ex )
273 template<
bool HasHndl>
275 Arg<QueryCode::Code>, Arg<Buffer>>
312 const Buffer buffer( std::get<BufferArg>( this->
args ).Get() );
319 catch(
const std::exception& ex )
330 template<
bool HasHndl>
332 Arg<std::string>, Arg<uint64_t>>
368 std::string path = std::get<PathArg>( this->
args ).Get();
369 uint64_t size = std::get<SizeArg>( this->
args ).Get();
376 catch(
const std::exception& ex )
396 template<
bool HasHndl>
432 std::string path = std::get<PathArg>( this->
args ).Get();
439 catch(
const std::exception& ex )
450 template<
bool HasHndl>
452 Arg<std::string>, Arg<MkDirFlags::Flags>, Arg<Access::Mode>>
488 std::string path = std::get<PathArg>( this->
args ).Get();
497 catch(
const std::exception& ex )
508 template<
bool HasHndl>
545 std::string path = std::get<PathArg>( this->
args ).Get();
552 catch(
const std::exception& ex )
563 template<
bool HasHndl>
565 Arg<std::string>, Arg<Access::Mode>>
601 std::string path = std::get<PathArg>( this->
args ).Get();
609 catch(
const std::exception& ex )
620 template<
bool HasHndl>
657 template<
bool HasHndl>
695 std::string path = std::get<PathArg>( this->
args ).Get();
702 catch(
const std::exception& ex )
722 template<
bool HasHndl>
724 Resp<StatInfoVFS>, Arg<std::string>>
760 std::string path = std::get<PathArg>( this->
args ).Get();
767 catch(
const std::exception& ex )
778 template<
bool HasHndl>
816 template<
bool HasHndl>
818 Arg<std::string>, Arg<DirListFlags::Flags>>
854 std::string path = std::get<PathArg>( this->
args ).Get();
862 catch(
const std::exception& ex )
873 template<
bool HasHndl>
911 std::string info = std::get<InfoArg>( this->
args ).Get();
918 catch(
const std::exception& ex )
929 template<
bool HasHndl>
931 Arg<std::vector<std::string>>, Arg<PrepareFlags::Flags>, Arg<uint8_t>>
967 std::vector<std::string> fileList = std::get<FileListArg>( this->
args ).Get();
969 uint8_t priority = std::get<PriorityArg>( this->
args ).Get();
977 catch(
const std::exception& ex )
988 template<
bool HasHndl>
990 Arg<std::string>, Arg<std::string>, Arg<std::string>>
1010 return "SetXAttrFsImpl";
1026 std::string path = std::get<PathArg>( this->
args ).Get();
1027 std::string name = std::get<NameArg>( this->
args ).Get();
1028 std::string value = std::get<ValueArg>( this->
args ).Get();
1030 std::vector<xattr_t> attrs;
1031 attrs.push_back(
xattr_t( std::move( name ), std::move( value ) ) );
1042 catch(
const std::exception& ex )
1057 std::move( value ) );
1068 std::move( value ) );
1074 template<
bool HasHndl>
1076 Resp<std::vector<XAttrStatus>>, Arg<std::string>, Arg<std::vector<xattr_t>>>
1096 return "SetXAttrBulkImpl";
1111 std::string path = std::get<PathArg>( this->
args ).Get();
1112 std::vector<xattr_t> attrs = std::get<AttrsArg>( this->
args ).Get();
1119 catch(
const std::exception& ex )
1131 Arg<std::vector<xattr_t>> attrs )
1141 Arg<std::vector<xattr_t>> attrs )
1149 template<
bool HasHndl>
1151 Arg<std::string>, Arg<std::string>>
1171 return "GetXAttrFsImpl";
1185 std::string path = std::get<PathArg>( this->
args ).Get();
1186 std::string name = std::get<NameArg>( this->
args ).Get();
1188 std::vector<std::string> attrs;
1189 attrs.push_back( std::move( name ) );
1200 catch(
const std::exception& ex )
1230 template<
bool HasHndl>
1232 Resp<std::vector<XAttr>>, Arg<std::string>, Arg<std::vector<std::string>>>
1252 return "GetXAttrFsBulkImpl";
1267 std::string path = std::get<PathArg>( this->
args ).Get();
1268 std::vector<std::string> attrs = std::get<NamesArg>( this->
args ).Get();
1275 catch(
const std::exception& ex )
1287 Arg<std::vector<std::string>> attrs )
1297 Arg<std::vector<std::string>> attrs )
1305 template<
bool HasHndl>
1307 Arg<std::string>, Arg<std::string>>
1327 return "DelXAttrFsImpl";
1343 std::string path = std::get<PathArg>( this->
args ).Get();
1344 std::string name = std::get<NameArg>( this->
args ).Get();
1346 std::vector<std::string> attrs;
1347 attrs.push_back( std::move( name ) );
1358 catch(
const std::exception& ex )
1388 template<
bool HasHndl>
1390 Resp<std::vector<XAttrStatus>>, Arg<std::string>, Arg<std::vector<std::string>>>
1410 return "DelXAttrBulkImpl";
1427 std::string path = std::get<PathArg>( this->
args ).Get();
1428 std::vector<std::string> attrs = std::get<NamesArg>( this->
args ).Get();
1435 catch(
const std::exception& ex )
1447 Arg<std::vector<std::string>> attrs )
1457 Arg<std::vector<std::string>> attrs )
1465 template<
bool HasHndl>
1467 Resp<std::vector<XAttr>>, Arg<std::string>>
1487 return "ListXAttrFsImpl";
1503 std::string path = std::get<PathArg>( this->
args ).Get();
1510 catch(
const std::exception& ex )
Definition: XrdClArg.hh:286
Definition: XrdClArg.hh:224
Binary blob representation.
Definition: XrdClBuffer.hh:34
ChMod operation (.
Definition: XrdClFileSystemOperations.hh:566
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:597
std::string ToString()
Definition: XrdClFileSystemOperations.hh:583
@ PathArg
Definition: XrdClFileSystemOperations.hh:578
@ ModeArg
Definition: XrdClFileSystemOperations.hh:578
Definition: XrdClOperations.hh:476
std::tuple< Args... > args
Operation arguments.
Definition: XrdClOperations.hh:698
DeepLocate operation (.
Definition: XrdClFileSystemOperations.hh:162
std::string ToString()
Definition: XrdClFileSystemOperations.hh:179
@ PathArg
Definition: XrdClFileSystemOperations.hh:174
@ FlagsArg
Definition: XrdClFileSystemOperations.hh:174
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:193
DelXAttr bulk operation (.
Definition: XrdClFileSystemOperations.hh:1391
@ NamesArg
Definition: XrdClFileSystemOperations.hh:1403
@ PathArg
Definition: XrdClFileSystemOperations.hh:1403
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:1423
std::string ToString()
Definition: XrdClFileSystemOperations.hh:1408
DelXAttr operation (.
Definition: XrdClFileSystemOperations.hh:1308
std::string ToString()
Definition: XrdClFileSystemOperations.hh:1325
@ NameArg
Definition: XrdClFileSystemOperations.hh:1320
@ PathArg
Definition: XrdClFileSystemOperations.hh:1320
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:1339
DirList operation (.
Definition: XrdClFileSystemOperations.hh:819
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:850
std::string ToString()
Definition: XrdClFileSystemOperations.hh:836
@ FlagsArg
Definition: XrdClFileSystemOperations.hh:831
@ PathArg
Definition: XrdClFileSystemOperations.hh:831
Definition: XrdClFileSystemOperations.hh:45
FileSystemOperation(FileSystem *fs, Args... args)
Definition: XrdClFileSystemOperations.hh:56
virtual ~FileSystemOperation()
Destructor.
Definition: XrdClFileSystemOperations.hh:87
FileSystemOperation(FileSystem &fs, Args... args)
Definition: XrdClFileSystemOperations.hh:67
FileSystem * filesystem
The file system object itself.
Definition: XrdClFileSystemOperations.hh:96
FileSystemOperation(FileSystemOperation< Derived, from, Response, Args... > &&op)
Definition: XrdClFileSystemOperations.hh:79
friend class FileSystemOperation
Definition: XrdClFileSystemOperations.hh:47
Send file/filesystem queries to an XRootD cluster.
Definition: XrdClFileSystem.hh:202
XRootDStatus SetXAttr(const std::string &path, const std::vector< xattr_t > &attrs, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus RmDir(const std::string &path, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Protocol(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus DirList(const std::string &path, DirListFlags::Flags flags, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Mv(const std::string &source, const std::string &dest, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Query(QueryCode::Code queryCode, const Buffer &arg, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus SendInfo(const std::string &info, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Stat(const std::string &path, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Prepare(const std::vector< std::string > &fileList, PrepareFlags::Flags flags, uint8_t priority, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus ChMod(const std::string &path, Access::Mode mode, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus DelXAttr(const std::string &path, const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus ListXAttr(const std::string &path, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus Rm(const std::string &path, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus DeepLocate(const std::string &path, OpenFlags::Flags flags, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus GetXAttr(const std::string &path, const std::vector< std::string > &attrs, ResponseHandler *handler, uint16_t timeout=0)
XRootDStatus Ping(ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus Truncate(const std::string &path, uint64_t size, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus MkDir(const std::string &path, MkDirFlags::Flags flags, Access::Mode mode, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
XRootDStatus StatVFS(const std::string &path, ResponseHandler *handler, uint16_t timeout=0) XRD_WARN_UNUSED_RESULT
GetXAttr bulk operation (.
Definition: XrdClFileSystemOperations.hh:1233
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:1263
@ PathArg
Definition: XrdClFileSystemOperations.hh:1245
@ NamesArg
Definition: XrdClFileSystemOperations.hh:1245
std::string ToString()
Definition: XrdClFileSystemOperations.hh:1250
GetXAttr operation (.
Definition: XrdClFileSystemOperations.hh:1152
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:1181
std::string ToString()
Definition: XrdClFileSystemOperations.hh:1169
@ NameArg
Definition: XrdClFileSystemOperations.hh:1164
@ PathArg
Definition: XrdClFileSystemOperations.hh:1164
ListXAttr bulk operation (.
Definition: XrdClFileSystemOperations.hh:1468
@ PathArg
Definition: XrdClFileSystemOperations.hh:1480
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:1499
std::string ToString()
Definition: XrdClFileSystemOperations.hh:1485
Locate operation (.
Definition: XrdClFileSystemOperations.hh:105
std::string ToString()
Definition: XrdClFileSystemOperations.hh:122
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:136
MkDir operation (.
Definition: XrdClFileSystemOperations.hh:453
std::string ToString()
Definition: XrdClFileSystemOperations.hh:470
@ FlagsArg
Definition: XrdClFileSystemOperations.hh:465
@ ModeArg
Definition: XrdClFileSystemOperations.hh:465
@ PathArg
Definition: XrdClFileSystemOperations.hh:465
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:484
Mv operation (.
Definition: XrdClFileSystemOperations.hh:219
@ SourceArg
Definition: XrdClFileSystemOperations.hh:231
@ DestArg
Definition: XrdClFileSystemOperations.hh:231
std::string ToString()
Definition: XrdClFileSystemOperations.hh:236
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:250
std::unique_ptr< PipelineHandler > handler
Operation handler.
Definition: XrdClOperations.hh:288
Ping operation (.
Definition: XrdClFileSystemOperations.hh:622
std::string ToString()
Definition: XrdClFileSystemOperations.hh:633
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:647
Pipeline exception, wrapps an XRootDStatus.
Definition: XrdClOperationHandlers.hh:360
const char * what() const noexcept
inherited from std::exception
Definition: XrdClOperationHandlers.hh:391
const XRootDStatus & GetError() const
Definition: XrdClOperationHandlers.hh:399
Prepare operation (.
Definition: XrdClFileSystemOperations.hh:932
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:963
@ PriorityArg
Definition: XrdClFileSystemOperations.hh:944
@ FlagsArg
Definition: XrdClFileSystemOperations.hh:944
@ FileListArg
Definition: XrdClFileSystemOperations.hh:944
std::string ToString()
Definition: XrdClFileSystemOperations.hh:949
Protocol operation (.
Definition: XrdClFileSystemOperations.hh:781
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:806
std::string ToString()
Definition: XrdClFileSystemOperations.hh:792
Query operation (.
Definition: XrdClFileSystemOperations.hh:276
@ BufferArg
Definition: XrdClFileSystemOperations.hh:288
@ QueryCodeArg
Definition: XrdClFileSystemOperations.hh:288
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:307
std::string ToString()
Definition: XrdClFileSystemOperations.hh:293
RmDir operation (.
Definition: XrdClFileSystemOperations.hh:511
std::string ToString()
Definition: XrdClFileSystemOperations.hh:527
@ PathArg
Definition: XrdClFileSystemOperations.hh:522
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:541
Rm operation (.
Definition: XrdClFileSystemOperations.hh:398
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:428
std::string ToString()
Definition: XrdClFileSystemOperations.hh:414
@ PathArg
Definition: XrdClFileSystemOperations.hh:409
SendInfo operation (.
Definition: XrdClFileSystemOperations.hh:876
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:907
std::string ToString()
Definition: XrdClFileSystemOperations.hh:893
@ InfoArg
Definition: XrdClFileSystemOperations.hh:888
SetXAttr bulk operation (.
Definition: XrdClFileSystemOperations.hh:1077
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:1107
std::string ToString()
Definition: XrdClFileSystemOperations.hh:1094
@ AttrsArg
Definition: XrdClFileSystemOperations.hh:1089
@ PathArg
Definition: XrdClFileSystemOperations.hh:1089
SetXAttr operation (.
Definition: XrdClFileSystemOperations.hh:991
std::string ToString()
Definition: XrdClFileSystemOperations.hh:1008
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:1022
@ PathArg
Definition: XrdClFileSystemOperations.hh:1003
@ ValueArg
Definition: XrdClFileSystemOperations.hh:1003
@ NameArg
Definition: XrdClFileSystemOperations.hh:1003
Stat operation (.
Definition: XrdClFileSystemOperations.hh:660
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:691
std::string ToString()
Definition: XrdClFileSystemOperations.hh:677
@ PathArg
Definition: XrdClFileSystemOperations.hh:672
StatVS operation (.
Definition: XrdClFileSystemOperations.hh:725
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:756
std::string ToString()
Definition: XrdClFileSystemOperations.hh:742
@ PathArg
Definition: XrdClFileSystemOperations.hh:737
Truncate operation (.
Definition: XrdClFileSystemOperations.hh:333
XRootDStatus RunImpl()
Definition: XrdClFileSystemOperations.hh:364
@ SizeArg
Definition: XrdClFileSystemOperations.hh:345
@ PathArg
Definition: XrdClFileSystemOperations.hh:345
std::string ToString()
Definition: XrdClFileSystemOperations.hh:350
Helper class for unpacking single XAttrStatus from bulk response.
Definition: XrdClOperationHandlers.hh:41
Helper class for unpacking single XAttr from bulk response.
Definition: XrdClOperationHandlers.hh:77
Request status.
Definition: XrdClXRootDResponses.hh:215
Definition: XrdClAnyObject.hh:26
StatImpl< false > Stat(File *file, Arg< bool > force)
Definition: XrdClFileOperations.hh:393
SendInfoImpl< false > SendInfo
Definition: XrdClFileSystemOperations.hh:924
ChModImpl< false > ChMod
Definition: XrdClFileSystemOperations.hh:615
MkDirImpl< false > MkDir
Definition: XrdClFileSystemOperations.hh:503
RmImpl< false > Rm
Definition: XrdClFileSystemOperations.hh:445
const uint16_t stError
An error occurred that could potentially be retried.
Definition: XrdClStatus.hh:32
MvImpl< false > Mv
Definition: XrdClFileSystemOperations.hh:268
LocateImpl< false > Locate
Definition: XrdClFileSystemOperations.hh:154
TruncateImpl< false > Truncate(File *file, Arg< uint64_t > size)
Definition: XrdClFileOperations.hh:559
DeepLocateImpl< false > DeepLocate
Definition: XrdClFileSystemOperations.hh:211
ProtocolImpl< false > Protocol
Definition: XrdClFileSystemOperations.hh:811
std::tuple< std::string, std::string > xattr_t
Extended attribute key - value pair.
Definition: XrdClXRootDResponses.hh:285
RmDirImpl< false > RmDir
Definition: XrdClFileSystemOperations.hh:558
PrepareImpl< false > Prepare
Definition: XrdClFileSystemOperations.hh:983
StatVFSImpl< false > StatVFS
Definition: XrdClFileSystemOperations.hh:773
PingImpl< false > Ping
Definition: XrdClFileSystemOperations.hh:652
DelXAttrImpl< false > DelXAttr(File *file, Arg< std::string > name)
Definition: XrdClFileOperations.hh:1208
SetXAttrImpl< false > SetXAttr(File *file, Arg< std::string > name, Arg< std::string > value)
Definition: XrdClFileOperations.hh:901
DirListImpl< false > DirList
Definition: XrdClFileSystemOperations.hh:868
QueryImpl< false > Query
Definition: XrdClFileSystemOperations.hh:325
GetXAttrImpl< false > GetXAttr(File *file, Arg< std::string > name)
Definition: XrdClFileOperations.hh:1055
ListXAttrImpl< false > ListXAttr(File *file)
Definition: XrdClFileOperations.hh:1338
Mode
Access mode.
Definition: XrdClFileSystem.hh:122
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:175
Code
XRootD query request codes.
Definition: XrdClFileSystem.hh:53
bool IsOK() const
We're fine.
Definition: XrdClStatus.hh:120