26 #ifndef __XRD_CL_FILE_OPERATIONS_HH__
27 #define __XRD_CL_FILE_OPERATIONS_HH__
44 template<
template<
bool>
class Derived,
bool HasHndl,
typename Response,
typename ... Arguments>
48 template<
template<
bool>
class, bool,
typename,
typename ...>
friend class FileOperation;
94 template<
bool HasHndl>
147 Arg<
Access::Mode>>( std::move( f ), std::move( url ), std::move( flags ),
178 template<
typename Hdlr>
181 ExResp factory( *this->file );
182 return this->StreamImpl( factory.
Create( hdlr ) );
203 const std::string &url = std::get<UrlArg>( this->args );
206 uint16_t timeout = pipelineTimeout < this->timeout ?
207 pipelineTimeout : this->timeout;
208 return this->file->Open( url, flags, mode, handler, timeout );
218 return OpenImpl<false>( std::move( file ), std::move( url ), std::move( flags ),
219 std::move( mode ) ).
Timeout( timeout );
225 template<
bool HasHndl>
227 Arg<uint64_t>, Arg<uint32_t>, Arg<void*>>
261 uint64_t offset = std::get<OffsetArg>( this->
args ).Get();
262 uint32_t size = std::get<SizeArg>( this->
args ).Get();
263 void *buffer = std::get<BufferArg>( this->
args ).Get();
264 uint16_t
timeout = pipelineTimeout < this->timeout ?
265 pipelineTimeout : this->
timeout;
266 return this->
file->Read( offset, size, buffer, handler, timeout );
276 return ReadImpl<false>( std::move( file ), std::move( offset ), std::move( size ),
277 std::move( buffer ) ).
Timeout( timeout );
283 template<
bool HasHndl>
285 Arg<uint64_t>, Arg<uint32_t>, Arg<void*>>
319 uint64_t offset = std::get<OffsetArg>( this->
args ).Get();
320 uint32_t size = std::get<SizeArg>( this->
args ).Get();
321 void *buffer = std::get<BufferArg>( this->
args ).Get();
322 uint16_t
timeout = pipelineTimeout < this->timeout ?
323 pipelineTimeout : this->
timeout;
324 return this->
file->PgRead( offset, size, buffer, handler, timeout );
333 uint16_t timeout = 0 )
335 return PgReadImpl<false>( std::move( file ), std::move( offset ), std::move( size ),
336 std::move( buffer ) ).
Timeout( timeout );
356 return Read( std::move( file ), std::move( offset ), std::move( size ),
357 std::move( buffer ), timeout );
360 template<>
inline PgReadImpl<false>
364 return PgRead( std::move( file ), std::move( offset ), std::move( size ),
365 std::move( buffer ), timeout );
371 template<
bool HasHndl>
373 Arg<uint64_t>, Arg<uint32_t>, Arg<void*>, Arg<std::vector<uint32_t>>>
407 uint64_t offset = std::get<OffsetArg>( this->
args ).Get();
408 uint32_t size = std::get<SizeArg>( this->
args ).Get();
409 void *buffer = std::get<BufferArg>( this->
args ).Get();
410 std::vector<uint32_t> cksums = std::get<CksumsArg>( this->
args ).Get();
411 uint16_t
timeout = pipelineTimeout < this->timeout ?
412 pipelineTimeout : this->
timeout;
413 return this->
file->PgWrite( offset, size, buffer, cksums, handler, timeout );
422 Arg<std::vector<uint32_t>> cksums,
423 uint16_t timeout = 0 )
426 std::move( buffer ), std::move( cksums ) ).
Timeout( timeout );
434 uint16_t timeout = 0 )
436 std::vector<uint32_t> cksums;
438 std::move( buffer ), std::move( cksums ) ).
Timeout( timeout );
444 template<
bool HasHndl>
473 uint16_t
timeout = pipelineTimeout < this->timeout ?
474 pipelineTimeout : this->
timeout;
475 return this->
file->Close( handler, timeout );
490 template<
bool HasHndl>
524 bool force = std::get<ForceArg>( this->
args ).Get();
525 uint16_t
timeout = pipelineTimeout < this->timeout ?
526 pipelineTimeout : this->
timeout;
527 return this->
file->Stat( force, handler, timeout );
543 template<
bool HasHndl>
545 Arg<uint32_t>, Arg<const void*>>
579 uint64_t offset = std::get<OffsetArg>( this->
args ).Get();
580 uint32_t size = std::get<SizeArg>( this->
args ).Get();
581 const void *buffer = std::get<BufferArg>( this->
args ).Get();
582 uint16_t
timeout = pipelineTimeout < this->timeout ?
583 pipelineTimeout : this->
timeout;
584 return this->
file->Write( offset, size, buffer, handler, timeout );
594 return WriteImpl<false>( std::move( file ), std::move( offset ), std::move( size ),
595 std::move( buffer ) ).
Timeout( timeout );
601 template<
bool HasHndl>
630 uint16_t
timeout = pipelineTimeout < this->timeout ?
631 pipelineTimeout : this->
timeout;
632 return this->
file->Sync( handler, timeout );
647 template<
bool HasHndl>
681 uint64_t size = std::get<SizeArg>( this->
args ).Get();
682 uint16_t
timeout = pipelineTimeout < this->timeout ?
683 pipelineTimeout : this->
timeout;
684 return this->
file->Truncate( size, handler, timeout );
700 template<
bool HasHndl>
702 Resp<VectorReadInfo>, Arg<ChunkList>, Arg<void*>>
737 void *buffer = std::get<BufferArg>( this->
args ).Get();
738 uint16_t
timeout = pipelineTimeout < this->timeout ?
739 pipelineTimeout : this->
timeout;
740 return this->
file->VectorRead( chunks, buffer, handler, timeout );
754 uint16_t timeout = 0 )
762 template<
bool HasHndl>
783 return "VectorWrite";
797 const ChunkList &chunks = std::get<ChunksArg>( this->
args ).Get();
798 uint16_t
timeout = pipelineTimeout < this->timeout ?
799 pipelineTimeout : this->
timeout;
800 return this->
file->VectorWrite( chunks, handler, timeout );
808 uint16_t timeout = 0 )
816 template<
bool HasHndl>
818 Arg<std::vector<iovec>>>
852 uint64_t offset = std::get<OffsetArg>( this->
args ).Get();
853 std::vector<iovec> &stdiov = std::get<IovArg>( this->
args ).Get();
854 uint16_t
timeout = pipelineTimeout < this->timeout ?
855 pipelineTimeout : this->
timeout;
857 int iovcnt = stdiov.size();
859 for(
size_t i = 0; i < stdiov.size(); ++i )
861 iov[i].iov_base = stdiov[i].iov_base;
862 iov[i].iov_len = stdiov[i].iov_len;
865 return this->
file->WriteV( offset, iov, iovcnt, handler, timeout );
873 Arg<std::vector<iovec>>
iov, uint16_t timeout = 0 )
882 template<
bool HasHndl>
916 Buffer &arg = std::get<BufferArg>( this->
args ).Get();
917 uint16_t
timeout = pipelineTimeout < this->timeout ?
918 pipelineTimeout : this->
timeout;
919 return this->
file->Fcntl( arg, handler, timeout );
927 template<
bool HasHndl>
956 uint16_t
timeout = pipelineTimeout < this->timeout ?
957 pipelineTimeout : this->
timeout;
958 return this->
file->Visa( handler, timeout );
966 template<
bool HasHndl>
968 Arg<std::string>, Arg<std::string>>
988 return "SetXAttrImpl";
1002 std::string &name = std::get<NameArg>( this->
args ).Get();
1003 std::string &value = std::get<ValueArg>( this->
args ).Get();
1005 std::vector<xattr_t> attrs;
1006 attrs.push_back(
xattr_t( name, value ) );
1009 uint16_t
timeout = pipelineTimeout < this->timeout ?
1010 pipelineTimeout : this->
timeout;
1012 if( !st.
IsOK() )
delete h;
1029 template<
bool HasHndl>
1031 Resp<std::vector<XAttrStatus>>, Arg<std::vector<xattr_t>>>
1051 return "SetXAttrBulkImpl";
1066 std::vector<xattr_t> &attrs = std::get<AttrsArg>( this->
args ).Get();
1067 uint16_t
timeout = pipelineTimeout < this->timeout ?
1068 pipelineTimeout : this->
timeout;
1069 return this->
file->SetXAttr( attrs, handler, timeout );
1085 template<
bool HasHndl>
1107 return "GetXAttrImpl";
1121 std::string &name = std::get<NameArg>( this->
args ).Get();
1123 std::vector<std::string> attrs;
1124 attrs.push_back( name );
1127 uint16_t
timeout = pipelineTimeout < this->timeout ?
1128 pipelineTimeout : this->
timeout;
1130 if( !st.
IsOK() )
delete h;
1147 template<
bool HasHndl>
1149 Arg<std::vector<std::string>>>
1169 return "GetXAttrBulkImpl";
1184 std::vector<std::string> &attrs = std::get<NamesArg>( this->
args ).Get();
1185 uint16_t
timeout = pipelineTimeout < this->timeout ?
1186 pipelineTimeout : this->
timeout;
1187 return this->
file->GetXAttr( attrs, handler, timeout );
1203 template<
bool HasHndl>
1224 return "DelXAttrImpl";
1238 std::string &name = std::get<NameArg>( this->
args ).Get();
1240 std::vector<std::string> attrs;
1241 attrs.push_back( name );
1244 uint16_t
timeout = pipelineTimeout < this->timeout ?
1245 pipelineTimeout : this->
timeout;
1247 if( !st.
IsOK() )
delete h;
1264 template<
bool HasHndl>
1266 Resp<std::vector<XAttrStatus>>, Arg<std::vector<std::string>>>
1286 return "DelXAttrBulkImpl";
1301 std::vector<std::string> &attrs = std::get<NamesArg>( this->
args ).Get();
1302 uint16_t
timeout = pipelineTimeout < this->timeout ?
1303 pipelineTimeout : this->
timeout;
1304 return this->
file->DelXAttr( attrs, handler, timeout );
1320 template<
bool HasHndl>
1322 Resp<std::vector<XAttr>>>
1336 return "ListXAttrImpl";
1351 uint16_t
timeout = pipelineTimeout < this->timeout ?
1352 pipelineTimeout : this->
timeout;
1353 return this->
file->ListXAttr( handler, timeout );
1367 #endif // __XRD_CL_FILE_OPERATIONS_HH__
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:317
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:1064
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:1000
PgReadImpl< false > RdWithRsp< PageInfo >(Ctx< File > file, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< void * > buffer, uint16_t timeout)
Definition: XrdClFileOperations.hh:361
ListXAttrImpl< false > ListXAttr(Ctx< File > file)
Definition: XrdClFileOperations.hh:1361
std::string ToString()
Definition: XrdClFileOperations.hh:836
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:1182
std::string ToString()
Definition: XrdClFileOperations.hh:986
FileOperation(FileOperation< Derived, from, Response, Arguments...> &&op)
Definition: XrdClFileOperations.hh:69
Close operation (.
Definition: XrdClFileOperations.hh:445
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:1299
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:1236
Definition: XrdClFileOperations.hh:715
SetXAttrImpl< false > SetXAttr(Ctx< File > file, Arg< std::string > name, Arg< std::string > value)
Definition: XrdClFileOperations.hh:1021
Definition: XrdClFileOperations.hh:558
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:577
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:1349
ReadTrait< RSP >::RET RdWithRsp(Ctx< File > file, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< void * > buffer, uint16_t timeout=0)
Utility class for storing a pointer to operation context.
Definition: XrdClCtx.hh:37
std::vector< ChunkInfo > ChunkList
List of chunks.
Definition: XrdClXRootDResponses.hh:1046
Definition: XrdClFileOperations.hh:386
VectorRead operation (.
Definition: XrdClFileOperations.hh:701
FcntlImpl< false > Fcntl
Definition: XrdClFileOperations.hh:922
std::string ToString()
Definition: XrdClFileOperations.hh:1049
Object stat info.
Definition: XrdClXRootDResponses.hh:399
std::string ToString()
Definition: XrdClFileOperations.hh:457
std::string ToString()
Definition: XrdClFileOperations.hh:188
Definition: XrdClOperationTimeout.hh:19
std::string ToString()
Definition: XrdClFileOperations.hh:1284
Definition: XrdClFileOperations.hh:831
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:734
Definition: XrdClXRootDResponses.hh:946
Definition: XrdClFileOperations.hh:386
Ctx< File > file
The underlying XrdCl::File object.
Definition: XrdClFileOperations.hh:136
DelXAttr bulk operation (.
Definition: XrdClFileOperations.hh:1265
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:628
VectorWrite operation (.
Definition: XrdClFileOperations.hh:763
uint16_t timeout
Operation timeout.
Definition: XrdClOperations.hh:766
Fcntl operation (.
Definition: XrdClFileOperations.hh:883
DelXAttrImpl< false > DelXAttr(Ctx< File > file, Arg< std::string > name)
Definition: XrdClFileOperations.hh:1256
PgReadImpl< false > PgRead(Ctx< File > file, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< void * > buffer, uint16_t timeout=0)
Factory for creating PgReadImpl objects.
Definition: XrdClFileOperations.hh:331
SetXAttr operation (.
Definition: XrdClFileOperations.hh:967
std::string ToString()
Definition: XrdClFileOperations.hh:563
Visa operation (.
Definition: XrdClFileOperations.hh:928
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:914
FileOperation(Ctx< File > f, Arguments...args)
Definition: XrdClFileOperations.hh:57
ReadImpl< false > Read(Ctx< File > file, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< void * > buffer, uint16_t timeout=0)
Factory for creating ReadImpl objects.
Definition: XrdClFileOperations.hh:273
std::string ToString()
Definition: XrdClFileOperations.hh:665
Definition: XrdClFileOperations.hh:1162
Access mode.
Definition: XrdClFileSystem.hh:116
GetXAttr operation (.
Definition: XrdClFileOperations.hh:1086
std::string ToString()
Definition: XrdClFileOperations.hh:614
Definition: XrdClFileOperations.hh:240
Read operation (.
Definition: XrdClFileOperations.hh:226
std::string ToString()
Definition: XrdClFileOperations.hh:781
std::string ToString()
Definition: XrdClFileOperations.hh:900
std::string ToString()
Definition: XrdClFileOperations.hh:245
VectorWriteImpl< false > VectorWrite(Ctx< File > file, Arg< ChunkList > chunks, uint16_t timeout=0)
Factory for creating VectorWriteImpl objects.
Definition: XrdClFileOperations.hh:807
OpenImpl< true > operator>>(Hdlr &&hdlr)
Definition: XrdClFileOperations.hh:179
std::string ToString()
Definition: XrdClFileOperations.hh:1334
Definition: XrdClFileOperations.hh:298
GetXAttrImpl< false > GetXAttr(Ctx< File > file, Arg< std::string > name)
Definition: XrdClFileOperations.hh:1139
Definition: XrdClFileOperations.hh:170
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:954
ListXAttr bulk operation (.
Definition: XrdClFileOperations.hh:1321
std::string ToString()
Definition: XrdClFileOperations.hh:940
Definition: XrdClOperationHandlers.hh:623
Definition: XrdClFileOperations.hh:298
Truncate operation (.
Definition: XrdClFileOperations.hh:648
WriteV operation (.
Definition: XrdClFileOperations.hh:817
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:70
Definition: XrdClFileOperations.hh:240
Definition: XrdClFileOperations.hh:1100
Definition: XrdOucIOVec.hh:65
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:405
std::string ToString()
Definition: XrdClFileOperations.hh:508
WriteImpl< false > Write(Ctx< File > file, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< const void * > buffer, uint16_t timeout=0)
Factory for creating WriteImpl objects.
Definition: XrdClFileOperations.hh:591
std::string ToString()
Definition: XrdClFileOperations.hh:391
virtual ~FileOperation()
Destructor.
Definition: XrdClFileOperations.hh:78
Definition: XrdClFileOperations.hh:831
Definition: XrdClFileOperations.hh:1044
SetXAttr bulk operation (.
Definition: XrdClFileOperations.hh:1030
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:850
Helper class for unpacking single XAttr from bulk response.
Definition: XrdClOperationHandlers.hh:76
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:201
Definition: XrdClFileOperations.hh:1217
std::tuple< Args...> args
Operation arguments.
Definition: XrdClOperations.hh:761
Definition: XrdClFileOperations.hh:386
Definition: XrdClArg.hh:232
Definition: XrdClFileOperations.hh:105
Definition: XrdClArg.hh:294
Stat operation (.
Definition: XrdClFileOperations.hh:491
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:679
Definition: XrdClFileOperations.hh:558
Describe a data chunk for vector read.
Definition: XrdClXRootDResponses.hh:907
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:1119
Request status.
Definition: XrdClXRootDResponses.hh:218
StatImpl< false > Stat(Ctx< File > file, Arg< bool > force, uint16_t timeout=0)
Definition: XrdClFileOperations.hh:535
Definition: XrdClFileOperations.hh:240
GetXAttr bulk operation (.
Definition: XrdClFileOperations.hh:1148
SyncImpl< false > Sync(Ctx< File > file, uint16_t timeout=0)
Factory for creating SyncImpl objects.
Definition: XrdClFileOperations.hh:639
Definition: XrdClFileOperations.hh:1279
Sync operation (.
Definition: XrdClFileOperations.hh:602
std::string ToString()
Definition: XrdClFileOperations.hh:1105
j template void())
Definition: XrdOucJson.hh:4121
Definition: XrdClFileOperations.hh:660
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:259
TruncateImpl< false > Truncate(Ctx< File > file, Arg< uint64_t > size, uint16_t timeout)
Definition: XrdClFileOperations.hh:692
Definition: XrdClOperations.hh:58
Lambda wrapper.
Definition: XrdClOperationHandlers.hh:311
OpenImpl(OpenImpl< from > &&open)
Definition: XrdClFileOperations.hh:160
Definition: XrdClFileOperations.hh:715
Definition: XrdClFileOperations.hh:45
Definition: XrdClFileOperations.hh:981
Handle an async response.
Definition: XrdClXRootDResponses.hh:1116
Definition: XrdClFileSystem.hh:123
Helper class for unpacking single XAttrStatus from bulk response.
Definition: XrdClOperationHandlers.hh:41
PgRead operation (.
Definition: XrdClFileOperations.hh:284
std::string ToString()
Definition: XrdClFileOperations.hh:720
Definition: XrdClFileOperations.hh:298
friend class FileOperation
Definition: XrdClFileOperations.hh:48
ResponseHandler * Create(std::function< void(XRootDStatus &, StatInfo &)> func)
Definition: XrdClFileOperations.hh:122
CloseImpl< false > Close(Ctx< File > file, uint16_t timeout=0)
Factory for creating CloseImpl objects.
Definition: XrdClFileOperations.hh:482
Open operation (.
Definition: XrdClFileOperations.hh:95
Mode
Access mode.
Definition: XrdClFileSystem.hh:121
Definition: XrdClFileOperations.hh:895
std::string ToString()
Definition: XrdClFileOperations.hh:1222
#define open
Definition: XrdPosix.hh:71
Definition: XrdClFileOperations.hh:386
Definition: XrdClFileOperations.hh:776
Definition: XrdClFileOperations.hh:558
RdWithRsp: factory for creating ReadImpl/PgReadImpl objects.
Definition: XrdClFileOperations.hh:342
VisaImpl< false > Visa
Definition: XrdClFileOperations.hh:961
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:522
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:795
Definition: XrdClFileOperations.hh:503
WriteVImpl< false > WriteV(Ctx< File > file, Arg< uint64_t > offset, Arg< std::vector< iovec >> iov, uint16_t timeout=0)
Factory for creating WriteVImpl objects.
Definition: XrdClFileOperations.hh:872
XRootDStatus RunImpl(PipelineHandler *handler, uint16_t pipelineTimeout)
Definition: XrdClFileOperations.hh:471
Flags
Open flags, may be or'd when appropriate.
Definition: XrdClFileSystem.hh:75
PgWriteImpl< false > PgWrite(Ctx< File > file, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< void * > buffer, Arg< std::vector< uint32_t >> cksums, uint16_t timeout=0)
Factory for creating PgReadImpl objects.
Definition: XrdClFileOperations.hh:420
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
Definition: XrdClFileOperations.hh:981
OpenImpl< false > Open(Ctx< File > file, Arg< std::string > url, Arg< OpenFlags::Flags > flags, Arg< Access::Mode > mode=Access::None, uint16_t timeout=0)
Factory for creating ReadImpl objects.
Definition: XrdClFileOperations.hh:215
Ctx< File > file
The file object itself.
Definition: XrdClFileOperations.hh:88
PgWrite operation (.
Definition: XrdClFileOperations.hh:372
Write operation (.
Definition: XrdClFileOperations.hh:544
std::string ToString()
Definition: XrdClFileOperations.hh:1167
ExResp(const Ctx< File > &file)
Definition: XrdClFileOperations.hh:112
std::unique_ptr< PipelineHandler > handler
Operation handler.
Definition: XrdClOperations.hh:304
OpenImpl(Ctx< File > f, Arg< std::string > url, Arg< OpenFlags::Flags > flags, Arg< Access::Mode > mode=Access::None)
Constructor (.
Definition: XrdClFileOperations.hh:144
std::string ToString()
Definition: XrdClFileOperations.hh:303
Binary blob representation.
Definition: XrdClBuffer.hh:33
DelXAttr operation (.
Definition: XrdClFileOperations.hh:1204
VectorReadImpl< false > VectorRead(Ctx< File > file, Arg< ChunkList > chunks, Arg< void * > buffer, uint16_t timeout=0)
Factory for creating VectorReadImpl objects.
Definition: XrdClFileOperations.hh:747
Definition: XrdClOperations.hh:541
ReadImpl< false > RdWithRsp< ChunkInfo >(Ctx< File > file, Arg< uint64_t > offset, Arg< uint32_t > size, Arg< void * > buffer, uint16_t timeout)
Definition: XrdClFileOperations.hh:353